В чем разница между ReferenceTableInfo и ShardedTableInfo в Azure Elastic DB?

Я скачал пример кода -> "ElasticScaleStarterKit" (в Visual Studio -> файл -> новый -> проект -> онлайн -> Инструменты Elastic DB для Azure SQL — начало работы).

схема определена следующим образом:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ShardedTableInfo("Customers", "CustomerId"));
schemaInfo.Add(new ShardedTableInfo("Orders", "CustomerId"));

В чем разница между ReferenceTableInfo и ShardedTableInfo?

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

Но что произойдет, если все таблицы будут установлены как ссылки?? В чем недостаток такой настройки:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));

надеюсь на любую помощь :)

спасибо!


person ZoharYosef    schedule 09.12.2015    source источник


Ответы (1)


Справочные таблицы — это таблицы, данные которых реплицируются. Это означает, что если в справочной таблице 5 строк, то эти 5 строк будут существовать во всех экземплярах справочной таблицы.

Однако Sharded Table — это таблица, в которой данные разделены. Например, если у вас есть 5 строк данных в таблице Sharded, то 2 будут жить в одном шарде (или базе данных) и 3 в другом. Таким образом, никакие две базы данных не будут иметь одинаковый набор строк.

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

Надеюсь это поможет!

person Silvia Doomra    schedule 09.12.2015
comment
Означает ли это, что если строка будет добавлена ​​в справочную таблицу в одном из осколков, эта строка будет реплицирована во всех осколках? Является ли это лучшей практикой, если справочная таблица обновляется новой строкой? - person codeputer; 14.11.2017
comment
Я считаю, что при преобразовании нормализованной БД для работы с Elastic DB требуется денормализация, чтобы гарантировать, что Shard Key должен быть во всех Sharded Tables. Например. Customer находится в регионе, Order имеет одного и только одного Customer, поэтому нормализованный Order не имеет RegionId, поскольку он является производным от Customer. Однако для шарда необходимо добавить RegionId — правильно? - person codeputer; 14.11.2017