Являются ли шардинг и нормализация взаимоисключающими? - PullRequest
0 голосов
/ 27 августа 2009

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

1 Ответ

4 голосов
/ 27 августа 2009

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

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

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

Немного хорошего чтения:

Теория и практика шардинга

Некоторые реализации хорошо масштабируемой базы данных «в дикой природе»

...