GoshawkDB


Выпущена новая база данных, представляющая собой распределенное транзакционное отказоустойчивое хранилище объектов. GoshawkDB хранит данные как постоянные объекты, и его создатель избегает использования термина «база данных» для их описания.

Большая привлекательность – это обещание, что GoshawkDB поддерживает полные многообъектные транзакции, которые являются атомарными и изолированными, независимо от того, сколько объектов касается транзакции или где они хранятся. Клиенты GoshawkDB также поддерживают вложенные транзакции, и поддерживаются такие функции, как Retry.

Поддерживаются только транзакции с уровнями изоляции строгой сериализуемости. Написав о поддержке транзакций на веб-сайте GoshawkDB, разработчик Мэтью Сакман сказал, что, хотя многие хранилища данных предлагают возможную согласованность, они создают проблемы в случае сбоев. Сакман говорит, что GoshawkDB отличается:

«он поддерживает полные транзакции, которые являются атомарными, независимо от того, сколько объектов они касаются. Транзакции обладают множеством хороших свойств, а использование полных транзакций делает ваш код более простым и легким для написания и поддержки. Транзакции GoshawkDB также долговечны: клиент не информируется о результате транзакции до тех пор, пока результат не будет записан и сброшен на диск “.

GoshawkDB также дает четкие гарантии того, как он будет вести себя при сбоях. В частности, вы можете установить параметр сбоя (F), который устанавливает количество сбоев, которое GoshawkDB должно допускать. Пока минимальный размер кластера равен 2 * F +

1, и не более F узлов кластера недоступны, кластер продолжит работу в обычном режиме. Если более F узлов становятся недоступными, транзакция может быть заблокирована, не может быть завершена или может быть отклонена, но расхождения между узлами не будет.

Сакман говорит, что GoshawkDB – это CP-система, использующая терминологию теоремы CAP для базы данных, которая сможет восстанавливаться после сбоев (включая сетевые разделы) и не будет нарушать согласованность. Хранилище данных упорядочивает транзакции только там, где это необходимо, избегая навязывания глобального общего порядка транзакций для повышения производительности. Утверждается, что при неизменной рабочей нагрузке производительность GoshawkDB не будет снижаться по мере добавления дополнительных узлов, а может увеличиваться.

GoshawkDB не заставляет вас использовать схемы. Он обрабатывает значения объектов как простые массивы байтов, и единственное требование – явно объявлять указатели на другие объекты. В целом, он выглядит полезным дополнением к опциям хранилища объектов, таким как Cassandra, Riak и CockroachDB, и будет интересно посмотреть, станет ли он популярным.


Добавить комментарий