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 запросов в секунду к коллекции с возвращением одного документа.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 28

      +1
      еще про индексы. прелесть еще и в том, что в DocumentDB не нужно создавать индексы вообще. они создаются и используются автоматически для всех данных

      дополнительно, сегодня же был представлен еще один сервис, относящийся к работе с данными — Azure Search — облачный сервис индексирования данных
        +9
        Автоматические индексы для всех данных — звучит слишком волшебно… должны быть и минусы у такого подхода, иначе, почему мы раньше всегда тщательно думали перед выбором полей для индексирования? Не пухнет ли от этого индекс и не замедляется ли вставка?
          +2
          Нужны независимые тесты. Сами разработчики пишут: «DocumentDB utilizes a highly concurrent, lock free, log structured indexing technology to automatically index all document content. This enables rich real-time queries without the need to specify schema hints, secondary indexes or views.»
          azure.microsoft.com/en-us/documentation/articles/documentdb-introduction/
            +4
            А тесты сравнения с конкурентами «произведений искусства программирования имени корпорации Майкрософт» уже можно публиковать? Или как и ранее нельзя?
              0
              мне неизвестны никакие ограничения, более того постоянно встречаю сравнительные тесты на разные системы
              вроде этого habrahabr.ru/company/microsoft/blog/221453/
          +1
          в DocumentDB не нужно создавать индексы вообще. они создаются и используются автоматически для всех данных
          А настраивать индексацию как в ElasticSearch можно? Эластик даёт возможность привязывать к каждому полю специально настраиваемый анализатор, например, оставляющий в индексе только словоформы.
          +1
          * хорошо бы еще пост в хаб «Microsoft Azure» добавить
            +1
            Поставляется ли (будет поставляться) DocumentDB отдельным решением для установки на сервер предприятия?
            Если да, то будет DocumentDB частью MS SQL Server или отдельным продуктом?
              0
              не поставляется. про будущее пока сказать нечего
              –4
              >Пусть и с некоторым опозданием по сравнению с остальными компаниями
              ну да, не прошло и 10 лет
                +12
                Будущее за PostgreSQL, Jsonb USING VODKA, вот это все.
                  0
                  Водочный индекс убил наповал, очень крутое решение.
                    0
                    Это вы намекаете, что майкрософту надо купить Postgres? ;)
                      0
                      Ну с Xamarin и Mono у них пока получается, так что почему бы и нет. Исходники .NET, например, меня очень порадовали, так что общее направление движения Microsoft мне нравится.
                    –6
                    Хорошая попытка, Майкрософт, но поздно.
                      +2
                      Ждём сравнительных тестов DocumentDB vs MongoDB vs PostgreSQL vs anything
                        –1
                        Очень тяжело будет объективно сравнить, поскольку ни для MongoDB, ни для PostgreSQL MS Windows не является главной целевой платформой.
                          +1
                          Я, например, гоняю Постгрес на винде и вполне доволен. Могу, кстати, протестировать на реальном железе 9.4 на FreeBSD и Windows и сравнить производительность.
                            0
                            Было бы круто! Только нужно именно документо-ориентированные фишки тестить. Могу помочь с тестами, если нужно.
                              0
                              Там боттлнек в разнице подхода к выделению процессов и потоков, непосредственно производительность движка почти одинаковая. В никсе по процессу на подключение — нормальное явление, а винда тяготеет к многопоточности, отдельные процессы — очень дорого. Для решения проблемы есть реализация пула процессов подключений, или можно заюзать persistent подключения от какой-нибудь ZeroMQ. При переносе логики с никсов на винду в лоб производительность резко падает из-за разницы в архитектурах.
                              –1
                              Верю. Сам знаком с админами, которые в виду, скажем так, особенностей IIS предпочитают запускать на Windows Server Apache. Но это в первую очередь из-за особенностей IIS, а не из-за какой-то особенной волшебной произвозводительности Apache на Windows.
                              +1
                              Что мешает использовать разные платформы?
                            +2
                            Один юнит — это 10 ГБ места на SSD-диске, 2000 операций чтения в секунду, 500 операций в секунду вставки/замены/удаления, 1000 запросов в секунду к коллекции с возвращением одного документа.


                            Создаётся впечатление, что 1 юнит — это одновременно И «2000 операций чтения в секунду» И «500 операций в секунду вставки/замены/удаления» И «1000 запросов в секунду к коллекции с возвращением одного документа». По факту в оригинальной статье это всё — примеры того, как может быть использован один capacity unit. Т.е. на самом деле все «И» в предложении выше надо заменить на «ИЛИ».
                              +1
                              А разве 9.999 Гб, 1999 чтений/сек, 499 изменений/сек и 999 запросов/колл/док одновременно не будет нагрузкой всё ещё в рамках однго юнита? Это же ортогональные ограничения. Вот выход за ограничения — там да, получится правило «ИЛИ».
                                0
                                А разве 9.999 Гб, 1999 чтений/сек, 499 изменений/сек и 999 запросов/колл/док одновременно не будет нагрузкой всё ещё в рамках однго юнита?

                                Нет. Там используются некие условные единицы производительности, вот их хватает на 2000 операций чтения, или 500 операций замены\вставки, или 1000 запросов на поиск. Т.е. можно использовать, например, 1000 read и 250 write запросов — это ещё в пределах юнита.
                                  0
                                  Странно, в калькуляторе они пишут: «Each unit of DocumentDB contains 10GB of high-performance disk storage and reserved throughput capacity.»

                                  Если дело обстоит как вы говорите, то должны быть некие формулы обмена: сколько операций записи можно разменять на 1000 чтений, во сколько гигов мне всанут дополнительные 100 запросов И 100 операций чтения, и т.п. А если у меня 500 вставок в секунду, то что, размер базы должен быть равен нулю?
                                    0
                                    Если дело обстоит как вы говорите, то должны быть некие формулы обмена: сколько операций записи можно разменять

                                    Так вот же. Там есть «стоимость» каждой операции, меняйте себе что хотите на что хотите (в плане операций обращения к базе, а общий размер — это отдельный, ортогональный параметр).
                                      0
                                      А, спасибо, по ссылкам из статьи другие калькуляторы выходят, не такие подробные, а этот не попался.

                            Only users with full accounts can post comments. Log in, please.