Что лучше в этом случае - одна БД SQL или несколько БД SQL CE - PullRequest
2 голосов
/ 17 апреля 2011

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

  1. использовать одну SQLDB, хранить все данные пользователей в одном и создавать оттуда отчеты.
  2. использовать одну базу данных SQL CE для каждого набора информации.
  3. несколько баз данных SQL Server, одна для набора

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

Ответы [ 3 ]

0 голосов
/ 17 апреля 2011

Сложность поиска записей в БД по индексу составляет около O(log(N)) Таким образом, если вы храните все данные в одной БД, каждый пользователь платит за то, чтобы сидеть в той же БД, что и другие, поскольку это является функцией общего количества записей для всех пользователей. Логарифм (или около того), но все же.

Поэтому отдельные БД лучше масштабируются. Вы даже можете обновлять структуру БД по очереди, не останавливая мир. Или поставить дополнительные ящики, обслуживающие их собственный круг пользователей. Если нужно конечно.

Это теория. Практика зависит от того, насколько эффективна ваша файловая система в поиске файлов и какова стоимость открытия / закрытия БД. AFAIR в SQLite, эти операции относительно дешевы.

0 голосов
/ 17 апреля 2011

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

Некоторые причины:

Возможны любые изменения в дизайне схемы.один раз в одном месте.

То же самое программное обеспечение меняет интерфейс базы данных.(Конечно, вы можете абстрагироваться от этого по большей части, но кто на самом деле это делает?)

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

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

При добавлении и удалении клиентов разница между добавлением строки в таблицу и установкой всей новой базы данных со всеми ее административнымиа также ресурсы и конфигурация для обслуживания.

(Примечание. Это также рассматривается как одна из «пессимизаций SQL» в одном из потоков по этой теме.)

0 голосов
/ 17 апреля 2011

Я бы сказал, что один сервер базы данных sql, а затем использовать несколько «экземпляров» или «схем», чтобы отделить разных пользователей.Поскольку люди загружают свои бизнес-данные, вы хотите выделить их и убедиться, что один из них не может получить доступ к другому.Вы, вероятно, захотите сделать какую-то олицетворение или что-то в этом роде, чтобы все детали подключения (так как это будут разные пользователи или что-то подобное для каждого клиента) были бы отдельными.

Я не думаю, что CE когда-либо былразработан для большого количества данных, и я знаю, что он просто хранит все в плоских файлах.Возможно, вы захотите использовать сервер sql, чтобы воспользоваться всеми специальными функциями (см. SSIS и SSRS).

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

...