Microsoft Azure DocumentDB против хранилища таблиц Azure

В течение нескольких последних лет Microsoft предлагает хранилище ключей / значений «NoSQL» под названием «Хранилище таблиц» (http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/)

Table Storage предлагает высокую производительность, масштабируемость (за счет секционирования) и относительно низкую стоимость. Основной недостаток таблиц в том, что индексировать можно только ключи разделов и строк, поэтому выполнение запросов по значениям очень неэффективно.

Недавно Microsoft анонсировала новую службу «NoSQL» под названием «DocumentDB» (http://azure.microsoft.com/en-us/documentation/services/documentdb/)

Вместо хранения списка свойств (как в таблицах) DocumentDB хранит объекты JSON. Индексируется весь объект - поэтому эффективные запросы могут быть созданы на основе каждого свойства и любого вложенного свойства сохраненных объектов.

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

Если это так - зачем кому-то использовать хранилище таблиц поверх DocumentDB? Похоже, DocumentDB предоставляет те же функции, что и таблицы, но с дополнительными возможностями, такими как возможность индексировать что угодно.

Я буду рад, если кто-нибудь сможет провести сравнение между DocumentDB и Table Storage, выделив минусы и плюсы каждого из них.


person Illidan    schedule 08.03.2015    source источник


Ответы (5)


Обе технологии являются NoSQL, но они сильно отличаются. Таблицы Azure - это простое хранилище ключей и значений, которое не поддерживает сложные функции, такие как сложные запросы (для большинства из них в любом случае потребуется полное сканирование раздела / таблицы, что приведет к снижению производительности и экономии средств), настраиваемое индексирование (индексирование основано на Только PartitionKey и RowKey, в настоящее время вы не можете индексировать какое-либо другое свойство сущности, и для поиска чего-либо, кроме комбинации PartitionKey / RowKey, потребуется сканирование раздела / таблицы) или хранимых процедур. Вы также не можете выполнять пакетные запросы чтения для нескольких объектов (запросы на пакетную запись поддерживаются, если все объекты принадлежат одному разделу). Для реального применения таблиц Azure см. ЗДЕСЬ.

Если ваши потребности в данных (особенно в отношении их запросов) просты (как в приведенном выше примере), тогда таблицы Azure предоставляют то, что вам нужно, вы можете в конечном итоге использовать это в пользу DocDB из-за цены, производительности и емкости хранилища. Например, целевой показатель производительности Azure Tables составляет 20 000 операций в секунду. Попытка добиться того же уровня производительности в DocDB будет иметь значительно более высокую стоимость обслуживания для вас. Кроме того, таблицы Azure ограничены емкостью вашей учетной записи хранения Azure (500 ТБ), тогда как объем хранилища DocDB ограничен единицей емкости, которую вы покупаете.

person Luis Delgado    schedule 09.03.2015
comment
По сути, вы говорите, что единственное хорошее в таблицах Azure - это цены. - person papadi; 30.09.2015
comment
@Luis для большинства из них в любом случае потребуется полное сканирование разделов / таблиц, что убьет вашу производительность и вашу экономию средств - это верно только в том случае, если вы создаете свои таблицы таким образом. Если вы знаете, что делаете, вы проектируете таблицы таким образом, чтобы они не выполняли полное сканирование таблицы, как и любая другая база данных NoSQL типа ключ / значение. Это также одно из самых больших различий между ними: при чтении документов кажется, что Microsoft обрабатывает большую часть, если не все, за вас с помощью DocumentDB, тогда как с хранилищем таблиц это зависит от вас, чтобы спроектировать его эффективно. - person David B.; 26.02.2016

Службы таблиц - это в основном тип NOSQL типа "ключ-значение", а DocumentDB (как следует из названия) представляет собой хранилище NoSQL типа документа. Вы спрашиваете, по сути, разница между этими двумя типами подходов NOSQL. Если вы построите свое исследование в соответствии с этим, вы наверняка сможете лучше понять.

Для простоты я предлагаю вам рассмотреть разницу между ценами на DocumentDB и Table Services. Не только стоимость этих услуг сильно отличается друг от друга, но и тот факт, что DocumentDB работает по модели «сначала предоставление», а услуги таблиц предлагаются на основе ценообразования, основанного исключительно на потреблении, может дать вам некоторые подсказки относительно вашего сравнения / контраста.

Позвольте мне спросить вас об этом; зачем мне использовать DocumentDB, если функции в службах таблиц хорошо удовлетворяют мои потребности? ;) Я предлагаю вам взглянуть на то, как текущие инструменты диагностики Azure используют службы хранилища Azure, как метрики хранилища используют хранилище Azure сами по себе, чтобы понять, насколько полезными могут быть службы таблиц и насколько излишним может быть DocumentDB в некоторых ситуациях.

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

person daronyondem    schedule 09.03.2015
comment
Спасибо за Ваш ответ. Не могли бы вы привести реальный пример, когда Table Storage будет лучше, чем DocumentDB (не считая ценового аспекта)? - person Illidan; 09.03.2015
comment
Конечно. Данные диагностики - это реальный пример, используемый Azure прямо сейчас. Вот еще один пример из реальной жизни, который вам может понравиться troyhunt.com/2013/12/working-with-154-million-records-on.html - person daronyondem; 10.03.2015

Я думаю, что сравнение все касается обмена цены на производительность. Table Services - это просто службы хранилища, которые, кажется, ограничены 20 000 операций в секунду, но постоянная оплата такой пропускной способности (поскольку хранилище предоставляет ее нам постоянно) составляет 1200 долларов в месяц. Сумасшедшие деньги.

Табличные службы имеют простые индексы, поэтому количество запросов очень ограничено. Подходит для всего, что написано и прочитано с помощью идентификаторов. DocumentDB индексирует весь документ, поэтому запрос можно выполнить по любому свойству.

И, наконец, службы таблиц связаны ограничением хранилища учетной записи хранилища, в которой они находятся (что может стать сумасшедшим при непосредственных переговорах с Microsoft), где хранилище DocumentDB кажется неограниченным.

Так что это баланс. У вас есть МНОГО данных (сотни гигабайт или терабайт), которые вам нужны в одном месте? DocumentDB. Вам нужна поддержка сложных запросов? DocumentDB. У вас есть данные, которые должны быстро поступать и уходить, но основанные на поиске свойств «1 к 2»? Столовые сервизы. Вы бы торговали, имея код на основе простого индекса, чтобы не платить за пропускную способность? Столовые сервизы.

И Редис, кто-то упомянул об этом ... чувак, я не знаю. Даже наличие персистентности в структуре кэширования (которую предлагает Redis) не превращает ее в предпочтительную технологию ... Существует огромная разница между постоянным хранилищем, в котором хранятся данные, которые «часто используются, но могут отсутствовать или устаревшие », как и кеш, и постоянное хранилище, которое гарантирует, что ваши данные будут там.

person Craig Brunetti    schedule 29.03.2017

Пример из реальной жизни:

Мне нужно сохранить несколько токенов, извлечь их, удалить. Только когда-либо выполненный запрос будет основан на идентификаторе пользователя.

Поэтому я использую хранилище таблиц, так как оно полностью соответствует моим требованиям. Я сохраняю токен под User ID.

Документ БД казался излишним для этого.

person Bhavjot    schedule 06.05.2016
comment
Похоже, что кеш Redis будет лучшим решением для этого, чем хранилище таблиц. - person richard; 19.10.2016
comment
Спасибо за предложение. Redis Cache мог бы быть лучше, но это больше сравнение между хранилищем таблиц и базой данных документов. - person Bhavjot; 27.10.2016
comment
Redis ничем не лучше. Во-первых, это кеш с необязательной сохраняемостью, который требует, чтобы все ваши данные умещались в памяти, а также для запуска и обслуживания сервера. Между тем, хранилище таблиц Azure будет стоить копейки, оно полностью управляемое, постоянное, надежное и имеет очень низкую задержку, когда вы работаете в одном регионе. - person Mani Gandham; 31.10.2018

Вот ответ от microsoft's official docs

Общие атрибуты Cosmos DB, хранилища таблиц Azure и базы данных SQL Azure:

  • Соглашение об уровне обслуживания 99,99

  • Полностью управляемые службы баз данных

  • Соответствие нормам ISO 27001, HIPAA и ЕС

  • В следующей таблице показаны необычные атрибуты Azure Cosmos DB, хранилища таблиц Azure.

введите здесь описание изображения

person Sajeetharan    schedule 31.03.2018