2012-02-24 7 views
1

Я начал работу над своим первым приложением Azure, и я многому учусь, когда ухожу. Одной из особенностей, которую я недавно обнаружил, были Federations в SQL Azure, по сути, реализация SQL Azure sharding, поэтому мы можем масштабировать горизонтально.SQL Azure Federations и Atomic Unit Identity

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

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

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

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

Любые советы были бы весьма полезными.

ответ

2

Я использую GUID при использовании Azure федерации SQL, это почти самый лучший выбор, когда данные Sharding. Предполагая, что вы используете Identity во многих членах федерации, это приведет к дублированию вашего основного значения. Когда вам нужно объединить данные назад или архив, как вы справляетесь с этими записями.

Люди думали, что GUID имеет низкую производительность при вставке данных, особенно если мы используем его как кластерный индекс. Но я никогда не встречал эту проблему. Или я должен сказать, что есть много настроек, которые мы можем сделать, а не этот.

0

Поэтому я не могу поговорить с вопросом EF. Но я не могу прокомментировать идею использования Uniqueidentifier в качестве ключевого типа. Это, на мой взгляд, лучший выбор. UniqueIdentifier на самом деле очень легко разделить на ... причина, по которой люди думают, что это сложно, они забывают, что такое UniqueIdentifier. GUID, который все мы знаем и любим, представляет собой шестнадцатеричное представление 128-битного целого числа. Это означает, что мы можем использовать с ним стандартные операции Integer и, таким образом, на самом деле так же легко работать, как Int (aut number), который вы знаете и любите.

Хотя это не касается федераций SQL Azure (речь идет о хранилище Windows Azure), это мое сообщение в блоге о том, что я использую GUID-тип для sharding, должно дать вам все, что вам нужно знать.

http://www.syringe.net.nz/CommentView,guid,cebe3e19-85e6-4d5b-bc24-afb6f66aaeb1.aspx