Ранее на этой неделе мы объявили, что DocumentDB — «база данных как услуга» от Azure NoSQL теперь доступна для разработчиков Xamarin. DocumentDB обладает всем тем, что нужно мобильному разработчику: полностью управляемой базой данных NoSQL в качестве службы, которая масштабируется по требованию, и может переносить данные в любую точку мира, где бы ни оказались Ваши пользователи, и при этом совсем не требует каких-либо изменений в коде приложения. Вот какие преимущества получают мобильные разработчики от использования DocumentDB:
- Огромные запросы у безсхемных данных. DocumentDB хранит данные в качестве безсхемных документов JSON в гетерогенных коллекциях, а также предлагает огромные и быстрые запросы без необходимости беспокоиться о схеме или индексах.
- Скорость гарантируемая SLA. На то, чтобы прочитать или написать документ при помощи DocumentDB требуется лишь несколько миллисекунд. Разработчики могут указать пропускную способность, необходимую им, и DocumentDB выполнит условие с 99.99% SLA.
- Безграничное масштабирование. Ваши коллекции DocumentDB будут увеличиваться вместе с ростом приложения. Вы можете начать с небольшого объема данных и 100 запросов в секунду и увеличивать их до сколь угодно большого значения. Например, до пропускной способности в 10 и 100 миллионов запросов в секунду и до петабайтов данных.
- Глобальная распределенная система. Пользователи мобильных приложений часто бывают на ходу и постоянно перемещаются по всему миру. DocumentDB является глобально распределенной базой данных, и посредством всего одного нажатия на карту она принесет данные в любое место, где бы ни были Ваши пользователи.
- Встроенная авторизация пользователя. С DocumentDB Вы сможете с легкостью реализовать такие популярные модели, как данные в расчёте на пользователя и общие многопользовательские данные. При этом можно будет обойтись без сложного пользовательского кода авторизации.
- Гео-пространственные запросы. Сегодня многие мобильные приложения предлагают гео-контекстные опыт. С первоклассной поддержкой геопространственных типов, DocumentDB позволяет без труда воссоздавать этот опыт.
- Бинарные вложения. Данные приложения часто включают в себя бинарные блобы. Нативная поддержка вложений позволяет с легкостью использовать DocumentDB в качестве «магазина одного окна» относительно данных Вашего приложения.
Следуйте простым шагам, изложенным ниже, и создайте приложение с охватом планетарного масштаба!
Шаг № 1: Начало работы
Начать работу с DocumentDB очень легко. Просто зайдите на портал Azure, создайте новую учетную запись DocumentDB, перейдите во вкладку Quickstart и скачайте образец списка задач Xamarin.Forms, связанный с Вашим аккаунтом DocumentDB.
Если у вас уже есть приложение Xamarin, Вы можете просто добавить вот этот пакет DocumentDB NuGet. Сегодня поддерживается совместное использование библиотек на Xamarin.iOS, Xamarin.Android и Xamarin.Forms.
Шаг № 2: Работа с данными
Ваши записи данных хранятся в DocumentDB в качестве безсхемных документов JSON в гетерогенных коллекциях. Вы можете хранить документы с различными структурами в одной и той же коллекции.
1 | var result = await client.CreateDocumentAsync (collectionLink, todoItem); |
В проектах Xamarin вы можете использовать язык интегрированных запросов над безсхемными данными:
1 2 3 4 5 6 7 8 | var query = client.CreateDocumentQuery<TodoItem> (collectionUrl) .Where (todoItem => todoItem.Complete == false) .AsDocumentQuery (); Items = new List<TodoItem> (); while (query.HasMoreResults) { Items.AddRange (await query.ExecuteNextAsync<TodoItem> ()); } |
Шаг 3: Добавляем пользователей
Сэмпл DocumentDB, который Вы уже загрузили, как и многие другие «начальные» сэмплы проходит аутентификацию на сервисе с помощью мастер-ключа, жёстко прописанного в коде приложения. Это, разумеется, не очень хороший вариант в том случае, если предполагается, что приложение будет запускаться где-либо еще, помимо локального эмулятора.
Вместо этого, нам нужно, чтобы приложение получало доступ только к записям зарегистрированного пользователя. Ниже приводится пример того, как можно изменить список задач приложения, с тем чтобы получить многопользовательский список задач. Полная версия сэмпла доступна здесь.
- Добавить опцию Login в приложение при помощи Facebook, Active Directory или любого другого провайдера.
- Создайте коллекцию DocumentDB UserItems с /userId в качестве ключа раздела. Указание ключа разделения для коллекциипозволяет DocumentDB осуществлять бесконечное масштабирование, в то время как число пользователей приложения продолжает расти. При этом предлагается высокая скорость обработки запросов.
- Добавьте DocumentDB Resource Token Broker — постой Web API, который аутентифицирует пользователей ивыпускает токены с временной активностью для зарегистрированных пользователей. Эти токены имеют доступ только к документам в пределах раздела пользователя. В этом примере мы размещаем Resource Token Broker в App Service.
- Измените приложение так, чтобы оно аутентифицировалось через Resource Token Broker посредством Facebook, и запросите токены ресурса для зарегистрированного пользователя Facebook, а затем получите доступ к данным пользователя в коллекции UserItems.
На следующем рисунке показано решение:
Шаг № 4: Масштабирование по запросу
DocumentDB является управляемой базой данных, предоставляемой в качестве сервиса. С ростом Вашей пользовательской базы, Вам не придется беспокоиться об инициализации виртуальных машин или увеличения ядер. И вот на чем нужно заострить внимание: DocumentDB создает сколько операций в секунду (пропускная способность), сколько Вашему приложению нужно. Вы можете указать пропускную способность с помощью вкладки портала Scale, используя меру пропускной способности под названием Request Units per second (RUs). Например, на операцию по чтению документа в 1 КБ требуется 1 RU. Вы также можете добавить оповещения для метрики «Пропускная способность», чтобы следить за ростом трафика и программно изменить пропускную способность при поступлении соответствующего оповещения.
Шаг № 5: Движемся в планетарном масштабе!
В то время как приложение набирает популярность может случиться так, что к нему начнут подключаться пользователи по всему земному шару. Или Вы опасаетесь, что можете быть застигнутыми врасплох, если метеорит ударит по центрам обработки данных Azure, где находится Ваша коллекцией DocumentDB. Перейдите на портал Azure в Ваш аккаунт DocumentDB и, щелкнув по карте, выберите любое количество регионов по всему миру, куда Ваши данные будут непрерывно тиражироваться. Таким образом можно гарантировать, что где бы ни были пользователи — они всегда смогут получить доступ к данным. И Вы сможете также добавить политику обработки ситуации отказа, чтобы быть готовым к любым неожиданностям.
Мы надеемся, что Вы найдете этот блог и сэмплы полезными и воспользуйтесь преимуществами DocumentDB в приложениях Xamarin! Как всегда делитесь своими впечатлениями и рассказывайте о том, какие улучшения вы хотели бы видеть в будущем для DocumentDB, через UserVoice, StackOverflow #azure-documentdb или стучитесь ко мне @kirillg_msft.
Автор: Кирилл Гаврилюк
Источник: Официальный блог Xamarin
Об авторе: Кирилл работает в Microsoft в команде DocumentDB. Вы можете найти его на Твиттере @kirillg_msft.
Написать ответ