Есть ли причина использовать две базы данных? - PullRequest
2 голосов
/ 10 ноября 2009

Это из-за размера? Кстати, а какой размер ограничен?

Ответы [ 10 ]

8 голосов
/ 10 ноября 2009

Есть много причин использовать две базы данных, некоторые из которых приходят на ум:

  1. Размер (ограничение которого контролируется операционной системой, файловой системой и сервером базы данных)

  2. Разделение типов данных. Думайте о базе данных как о книге - вы не написали бы книгу, охватывающую несколько предметов, и у вас не должно быть (обязательно) базы данных с несколькими предметами. Так что все данные так или иначе связаны между собой, вы можете хранить их вместе (т.е. все таблицы имеют какое-то отношение к одному веб-сайту или приложению).

  3. Импорт / Экспорт - может быть проще импортировать данные в ваше приложение, если вы можете удалить и восстановить всю базу данных, а не импортировать отдельные строки в таблицу базы данных.

4 голосов
/ 10 ноября 2009

Отдельные приложения или услуги. Я не вижу причин использовать отдельные базы данных для одного приложения / службы.

(примечание: репликация, даже мультимастерная, не является отдельной базой данных. Как и Sharding.)

Я думаю, что некоторые здесь путают базу данных с базой данных Экземпляр .

Пример: Телефонная книга является ярким примером базы данных.

Тиражирование: наличие 2 копий одной и той же телефонной книги не означает, что у вас есть 2 базы данных. Это означает, что у вас есть 2 копии 1 базы данных, и вы можете передать 1 кому-то еще, чтобы вы могли одновременно искать разные вещи, выполняя одновременно больше работы.

Sharding: Вы можете разорвать эти телефонные книги в конце белых страниц и в начале желтых и передать их еще двум людям. Кроме того, вы можете разорвать их на каждом письме, а когда вам понадобится Сьюзен Саммерс, попросите человека из этого раздела книги найти ее.

2 голосов
/ 10 ноября 2009

У меня иногда есть отдельная база данных, потому что они решают разные проблемы. И.Е. база данных отчетов или база данных аутентификации.

1 голос
/ 10 ноября 2009

Как уже упоминал Бен, репликация - одна из причин. Другой способ - балансировка нагрузки.

Например, Hotmail использует много серверов баз данных, а данные клиентов разбиты по базам данных.

Размещение всех данных своих клиентов на одном сервере потребует не только больших требований к хранилищу, но и времени отклика будет ужасным.

В других случаях данные могут быть разделены по функциям. У вас может быть два набора данных, которые либо не связаны, либо, по крайней мере, очень слабо, и в таких случаях может иметь смысл отделить эти данные от остальных.

1 голос
/ 10 ноября 2009
  • Создание вашей системы масштабируемой путем разделения вашей системы баз данных на другое физическое местоположение
  • Обеспечение резервирования / репликации в качестве резервной копии и бесперебойной работы. A
1 голос
/ 10 ноября 2009

Вы можете использовать две базы данных по той же причине, по которой большинство банков имеют два банкомата для надежности. Вы можете поменять один, если другой не удастся, но для быстрого выполнения этого требуется настройка, такая как cname и управление вашим собственным DNS-сервером.

Вы также можете выполнять записи в одну базу данных, если записи имеют сложные триггеры, и использовать некоторую синхронизацию между базами данных для обновления второй базы, которая используется для выбора.

Вы можете использовать две базы данных для распределения нагрузки, например, использовать циклический перебор для разделения нагрузки, чтобы одна не была перегружена.

1 голос
/ 10 ноября 2009
1 голос
/ 10 ноября 2009

предположим, что вы хотите опубликовать или повторно использовать некоторую внешнюю базу данных и отделить ее от основной базы данных. Это было бы хорошей причиной для использования 2 баз данных ... Вы можете удалить и повторно импортировать внешнюю базу данных в любое время, не затрагивая вашу базу данных, и наоборот ...

0 голосов
/ 18 ноября 2011

Я думаю, что базы данных SQLite на iPhone ограничены размером в 50 мегабайт, но вы можете открыть несколько баз данных.

0 голосов
/ 10 ноября 2009

Также учитывайте потребности ввода-вывода. Пишу одному, читаю другому. Один с немедленной потребностью в транзакциях, другие, где «транзакции» могут быть поставлены в очередь, один экземпляр с высоким приоритетом, другой с приоритетом «ожидания» и т. Д. Однако очень очевидно, что при правильном расположении оборудования и табличного пространства / файловой системы большинство из этих ситуаций может быть достигнуто в отдельной БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...