DocumentDB: база данных NoSQL от Microsoft
Пусть и с некоторым опозданием по сравнению с остальными компаниями, но Microsoft сделала необходимое и выпустила собственную нереляционную базу данных: она называется DocumentDB. И пусть это проприетарная система, которая привязана к сервису Azure, это не делает новость менее значимой.DocumentDB автоматически индексирует содержимое всех документов, допускает обработку запросов в реальном времени, полностью поддерживает требования ACID к транзакциям (атомарность, согласованность, изолированность, надёжность). Система очень похожа на MongoDB как эффективное хранилище JSON-документов с богатыми API для запросов, в то же время выгодно отличается от MongoDB по масштабируемости и надёжности работы, глубокой интеграции JavaScript, поддержке RESTful API, асинхронных запросов и др.
Как и MongoDB, DocumentDB представляет собой иерархию баз данных, коллекций и документов.Запросы на SQL-подобном синтаксисе в DocumentDB обрабатываются как есть, без необходимости выбирать индексы.
Вот как выглядят SQL-подобные запросы в DocumentDB.
SELECT * FROM teams T WHERE T.city = 'Melbourne' SELECT T FROM teams T JOIN person IN T.members WHERE person.age >= 18 SELECT ApplySalesTax (item, 'Australia') FROM item in cart.items DocumentDB исполняет скрипты JavaScript внутри базы данных. Различные хранимые в базе процедуры, функции и триггеры можно писать на JavaScript (скрипты лежат в коллекциях для последующего выполнения). Вся логика JavaScript исполняется в рамках гарантированной ACID-надёжности с изоляцией снэпшотов. Во время исполнения, если скрипт выбрасывает exception, вся транзакция отменяется.Клиентские библиотеки для работы с хранилищем DocumentDB:
Стоимость использования DocumentDB в облаке Azure измеряется в юнитах (capacity units) и начинается от $22,50 за юнит (учитывая скидку 50% на пробный период). Один юнит — это 10 ГБ места на SSD-диске, 2000 операций чтения в секунду, 500 операций в секунду вставки/замены/удаления, 1000 запросов в секунду к коллекции с возвращением одного документа.