2009-11-10 3 views

ответ

8

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

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

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

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

+0

1. Если вы нажмете на эти лимиты, вы должны купить больше оборудования (больше места) и/или начать ошпаривание. sharding не является другой базой данных. 2. Мне не очень нравится ваше объяснение, потому что есть много книг, которые охватывают несколько предметов (например, энциклопедии, словари и т. Д.), Которые являются прекрасными примерами баз данных. несколько сайтов могут заставить вас использовать другую базу данных. несколько приложений, безусловно. 3. проще ... да. однако, если вы это делаете, ваша база данных, вероятно, не является реляционной (возможно). Я серьезно думаю, что этот ответ находится далеко от цели. – xenoterracide

+0

также # 3 не является хорошей причиной для создания отдельной базы данных. – xenoterracide

+0

@xeno, ограничение по размеру может быть связано с программным обеспечением, таким как sql express, которое ограничивает вас до 4 ГБ. Разделение выполняется, чтобы показать, что данные, содержащиеся в двух базах данных, не связаны друг с другом. Как и два плагина, которые используют разные бэкенды данных, и любой плагин может работать сам по себе. Энциклопедии содержат несвязанные данные. Также есть несколько доступных вики, все с различным целевым контентом. Отбрасывание и повторное создание базы данных во время разработки проще, чем начинать удалять все повсюду, особенно когда у вас есть [вместо] триггеров, внешних ключей и т. Д. – sisve

1

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

1

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

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

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

1
  • Создание системы scalable по разделим системе базы данных в другое физическое местоположение
  • обеспечения избыточности/репликации в качестве резервного и бесшовные uptime.a
4

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

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

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

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

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

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

+0

Или две разные части в одном приложении, где можно работать независимо от другого. (И где только одна из частей повторно используется в других проектах.) – sisve

+0

Единственное, что я могу думать о том, что вы можете иметь в виду, это нечто вроде аутентификации. В этом случае я бы рассмотрел эту другую службу/приложение. Фактически, все случаи, о которых я думаю, являются другим сервисом/приложением, которое было интегрировано. – xenoterracide

2

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

1

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

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

Чтобы данные всех своих клиентов на одном сервере не только требовали больших требований к хранению, но время отклика было бы ужасным.

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

0

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

0

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

Смежные вопросы