2008-10-10 2 views
0

В StackOverflow подкаст нет. 19, Джо описывает решение Fogcreek иметь одну базу данных PER client вместо одна база данных для ВСЕХ клиентов. Это меня заставляет задуматься о следующем.Что такое разумное время запроса для связанных таблиц с очень большими наборами данных?

  1. Предполагаю, что у меня 1000 пользователей.
  2. У каждого пользователя есть 100 клиентов.
  3. Каждый клиент имеет 1000 продуктов.

Значит, я буду уже 1000 х 100 х 1000 = 100000000 продукты, связанные с пользователями. Теперь, если я делаю запрос таблицы соединений для пользователя и всех продуктов его клиента, что должно быть разумным количеством времени запроса, если я использую только одну базу данных для этой цели?

UPDATE

Может быть, я не был достаточно ясно в моем вопросе. Предположим, мне нужно делать всевозможные фанк-запросы (min, max, group и т. Д.) С наборами данных, как описано выше, будет ли оно медленным (или нет) до такой степени, что имеет смысл иметь несколько стратегий базы данных, например , 1 DB/клиент, сбой базы данных и т. Д.

ответ

1

Я предполагаю, что ответ зависит от вашего выбора СУБД. С Oracle, например, 1 большая база данных, безусловно, была бы предпочтительнее, ведь 1000 идентичных баз данных считались бы абсурдными и неуправляемыми.

Кроме того, у вас никогда не было бы необходимости запускать запросы пользователей? например найти пользователя с большинством продуктов. Или это действительно 1000 дискретных «частных» баз данных, и никто не имеет общего доступа к данным? Даже тогда Oracle, например, предлагает «Виртуальную частную базу данных», чтобы удовлетворить это в одной базе данных.

0

В большинстве случаев у вас должен быть пользователь и/или клиент как часть ПК, поэтому ваша производительность в сценарии с несколькими арендаторами не должна сильно влиять на однопользовательский режим, арендатор кейс.

0

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

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

1

Основными причинами стратегии с одной базой данных для каждого клиента являются безопасность и управляемость. Хотя концепция резервного копирования/восстановления в одной базе данных, а не 100 клиентских БД, дает вам выигрыш, у нее есть некоторые недостатки. Некоторые из проблем, с общей базой данных являются:

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

  • Все приложение должно быть в курсе модели безопасности, которая добавляет некоторую степень сложности. Опять же, с конфиденциальными данными это имеет последствия для соблюдения.

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

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

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

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