В последнем релизе СУБД MongoDB повышена надежность запросов бизнес-интеллекта, операций записи в базу данных, проверки схемы и поддержки языка Python. Будущий релиз 4.0 будет поддерживать ACID (атомарность, согласованность, изолированность, устойчивость). Сейчас эта функция проходит публичное бета-тестирование, сообщает портал ZDNet.

Поддержка ACID часто рассматривается как обязательное условие для перспективных СУБД. Она означает, что транзакции будут выполняться полностью или не будут выполняться вообще, а после их завершения данные будут обновлены. Она означает также, что на отдельную транзакцию не могут повлиять другие транзакции и что после ее завершения обновленные данные останутся правильными даже в случае сбоя в работе СУБД.

Эти требования ассоциируются с серверными финансовыми системами, где не должно быть сомнений в том, что процессы записи и обновления транзакций не искажены. Но поддержка ACID полезна и во многих других областях. Если вы используете распределенную базу данных, вы можете укрепить доверие к данным, если сообщите, как поддерживается согласованность: в процессе транзакции (immediate) или по ее завершении (eventual).

Релиз 4.0 будет выпущен позднее в этом году. Полный список функций еще не опубликован. Причина досрочного раскрытия поддержки ACID в том, что она имеет принципиальный характер. Если в Oracle и SQL Server такая поддержка рассматривается как нечто само собой разумеющееся, то в ряде новых СУБД от Amazon Aurora и Azure Cosmos DB до Google Cloud Spanner и даже в платформах анализа данных вроде Hadoop она считается отличительным признаком.

Поддержка ACID в MongoDB будет распространяться на множество документов. Но можно применить выборочный подход. Не все имплементации MongoDB потребуют ACID, не все элементы данных в каждом документе или коллекции будут нуждаться в ACID. Включение и отключение производятся с помощью инструкций start и commit. В первой бета-версии поддержка ACID будет ограничена единственной репликой. Распределенная поддержка сегментированных кластеров ожидается позднее в этом году.

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

А есть такие области, где необходимость в ACID дифференцирована. Скажем, приложение, отслеживающее покупки и предпочтения пользователей, может требовать ACID только применительно к наименованиям приобретенных товаров. В MongoDB новая функция ACID, распространяющаяся на коллекции из множества документов, позволит избирательно применять ACID к данным.

Поддержка ACID в MongoDB — это кульминация серии обновлений, начатой реализацией движка хранения WiredTiger в релизе 3.0. В свою очередь, WiredTiger расчистил путь для связанных с ним функций, таких как настраиваемые блокировки записи и потоки изменений.

Все это не означает, будто до сих пор в MongoDB нельзя было осуществлять транзакции в соответствии с ACID. Но приходилось вписывать поддержку транзакций в код приложений. Встроенная в СУБД поддержка ACID облегчит жизнь разработчиков, упростив обслуживание и сделав транзакционные приложения более надежными.