Проектирование баз данных SaaS - Несколько Баз данных? Разделение?

20
задан givanse 6 February 2014 в 15:20
поделиться

9 ответов

Запустите с одной базы данных. Данные/функциональность разделения, когда проект требует его.

Вот то, что мы можем узнать из LinkedIn:

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

Источник:

архитектура LinkedIn

коммуникационная архитектура LinkedIn

33
ответ дан 29 November 2019 в 22:49
поделиться

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

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

9
ответ дан 29 November 2019 в 22:49
поделиться

Высокая Масштабируемость является хорошим блогом для масштабирования приложений SaaS. Как упомянуто, разделяя таблицы через базы данных, поскольку Вы предложили, обычно плохая идея. Но подобное понятие является sharding, где Вы сохраняете то же (или подобный) схемой, но разделяете данные по нескольким серверам. Например, пользователи 1-5000 находятся на server1 и пользователях 5000-10000 на server2. В зависимости от запросов Ваше использование приложения это может быть эффективный способ масштабироваться.

13
ответ дан 29 November 2019 в 22:49
поделиться

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

Однако несколько баз данных могут быть необходимыми при необходимости в сайте/приложении, чтобы быть хорошо масштабируемыми (например, интернет-масштаб). Например, Вы могли разместить каждую базу данных по различному физическому серверу.

3
ответ дан 29 November 2019 в 22:49
поделиться

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

3
ответ дан 29 November 2019 в 22:49
поделиться

Существует множество способов выполнить его, но проблемы коллективной аренды идут глубже, чем просто модель данных. Я очень не хочу включить продукт, но выезд SaaSGrid моим компания, я работаю в, Apprenda.We're облачная операционная система, которая позволяет Вам писать единственному арендатору приложения SOA (не стесняются использовать NHibernate для доступа к данным), который автоматически вводит коллективную аренду в Ваше приложение. При публикации приложения можно сделать, вещам нравится, выбирают модель данных (изолированная база данных или совместно использованный), и SaaSGrid развернется соответственно, и приложение будет работать без любых изменений кода - просто пишут код, как будто это было для единственного арендатора!

1
ответ дан 29 November 2019 в 22:49
поделиться

Зачем вообще использовать базу данных?

Я думаю, что это хорошая идея - использовать распределенные системы хранения, такие как Hadoop, Voldemort (project-voldemort.com, разработанный и используемый LinkedIn).

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

1
ответ дан 29 November 2019 в 22:49
поделиться

Спросите себя: Что Вы получаете путем перемещения всего в отдельные базы данных?

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

0
ответ дан 29 November 2019 в 22:49
поделиться

Сохраните это естественным дизайном (денормализуйте столько же по мере необходимости, нормализуйте так же меньше как требуется). Разделите Модель DB на ее модули и помните о сервисно-ориентированных принципах путем противостояния на данные с сервисом (который владеет данными).

0
ответ дан 29 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: