GlobalsDB — универсальная NoSQL база данных. Часть 1

От переводчика
На мой взгляд на Хабре мало информации о бесплатной NoSQL-базе GlobalsDB. Оригинальная статья написана в августе 2011 года и ещё актуальна. Перед вами первая часть. Во второй части будет рассказано как с помощью GlobalsDB моделировать различные типы NoSQL-баз.

Роб Твид (Rob Tweed)Введение

GlobalsDB — бесплатная база данных, которая использует для сохранения данных механизм Глобальных Постояннохранимых Переменных (Global Persistent Variables), т.е. переменных значения которых автоматически сохраняются на жёстком диске. Они представляют собой абстракцию над бинарными деревьями (B-trees) и могут быть использованы для хранения больших объёмов данных представленных как многомерные разреженные массивы.

С помощью Глобальных Постояннохранимых Переменных (обычно называемых «глобалами», поэтому и база называется GlobalsDB) можно выразительно и высокоэффективно решать все обычные задачи, для которых принято сегодня использовать различные NoSQL-базы.

Сердцем GlobalsDB является тот же движок, что используется в БД Caché.

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

В отличие от Caché GlobalsDB бесплатна для использования, разработки и распространения без всяких ограничений, что делает эту платформу очень привлекательной (однако это не Open Source продукт).

Эта статья разъясняет, как GlobalsDB может быть использована для моделирования и хранения данных различных типов NoSQL-баз:


И как, в результате, получить максимум преимуществ: NoSQL-возможности, соединённые с производительностью, надёжностью и зрелостью, которые нужны для критических бизнес-приложений.

К GlobalsDB можно обращаться через высокопроизводительный внутрипроцессный API, который доступен для Node.JS (Javascript), .NET и Java.

Команды к GlobalsDB передаются не через порты и сокеты, что замедлило бы работу с БД, а напрямую путём обращения к программному коду GlobalsDB из процесса приложения. Для максимального быстродействия процесс GlobalsDB подлинкован к процессу приложения.

Доступ из других языков по видимому будет реализован в будущем.

В этой статье мы будем использовать для доступа к GlobalsDB Javascript-интерфейс из Node.JS.

Замечание: Глобалы в данной статье — это не переменные с глобальной областью видимости. В терминах GlobalsDB глобалы — это структуры для хранения данных.

Краткое введение в NoSQL.

Термину NoSQL всего несколько лет. Он был придуман для обозначения технологий хранения данных, удовлетворяющим жёстким требованиям Web- или интернет-масштабов.

Проще говоря, вот три особенности Web-масштабов:


Реляционные БД, доминировавшие начиная с 80-х годов прошлого века, при применении в Web-масштабах начали показывать свою слабость в этих трёх областях. Поэтому разработчики стали искать альтернативы.

Спрос рождает предложение: начали появляться NoSQL базы данных. Несмотря на разнообразие видов NoSQL баз все они имеют следующие общие черты:


Все самые успешные и наиболее известные NoSQL базы данных были разработаны с нуля в течении нескольких последних лет. Странно. Выглядит так что никто не поискал существующих, хорошо реализованных технологий БД, которые могли бы предоставить прочное основание для работы с Web-масштабами.

Эта статья призвана продемострировать вам, что GlobalsDB может стать прекрасной основой для создания NoSQL баз данных, использующих существующую, проверенную и оттестированную технологию.

GlobalsDB в сочетании с экcтремально высокой производительностью Node.JS предоставляет идеальную, мощную высокопроизводительную промышленную платформу для реализации NoSQL баз данных.

Краткий обзор глобалов

Ещё раз напомню под глобалами мы понимаем структуры для хранения данных, а под GlobalsDB базу данных построенную на глобалах.

Глобалы:


Можете думать, что это автосохраняемые на диск ассоциативные массивы и вы недалеко уйдёте от истины.

Некоторые примеры глобалов:

myTable["101-22-2238", "Chicago", 2] = "Some information"
account["New York", "026002561", 35120218433001] = 123456.45

Каждый глобал имеет имя (как и массивы имеют имена). Далее следуют несколько индексов, значения которых могут быть численными или строковыми. Вы можете иметь любое число индексов. Есть ограничение только на суммарную их длину, которое довольно велико.

Каждый элемент глобала (который определяется именем глобала и сочетанием индексов) хранит текстовую строку. Пустые строки разрешены.

Вы можете создавать или удалять элементы глобала тогда, когда вы хотите. Всё происходит динамически и не требует никаких объявлений или определения схем данных.

Все высокоуровневые абстракции и схемы данных находятся в голове разработчика, а база данных физически хранится в глобалах.

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

Глобалы чрезвычайно универсальны и могут быть легко использованы для моделирования всех 4-х типов NoSQL баз со сравнимой или во многих случаях значительно превосходящей производительностью:


Во второй части будут показаны детальные примеры о том, как это сделать.

Производительность как у баз в RAM, целостность как у баз на диске.

Одна из основных причин экстремально высокой производительности GlobalsDB это интеллектуальный кеширующий механизм, который на протяжении многих лет улучшался и оптимизировался в Caché, от которой GlobalsDB и унаследовала движок базы данных.

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

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

Для сравнения в подобных ситуациях Caché и, как следствие, GlobalsDB ведут себя гораздо надёжнее.

Ядро Caché десятилетиями разрабатывалось и эксплуатировалось в таких требовательных областях как здравоохранение, банковское дело и финансы. В этих областях принципиальны производительность, целостность и доступность в режиме нон-стоп.

Результатом длительной разработки, отладки и тестирования стали скорость подобная базам размещаемым в ОЗУ и целостность данных свойственная свойственная базам работающим с диском.

Цели, которые определяли и двигали разработку БД движка внутри GlobalsDB, практически полностью совпадают с целями NoSQL движения.

Черты NoSQL баз

В 2010 в TechRepublic был опубликован пост «10 вещей, которые вы должны знать о NoSQL базах».

В нём приведено 5 преимуществ и 5 слабых мест характерных для NoSQL баз.

Если мы рассмотрим GlobalsDB с точки зрения этого поста, то ей присуще все 5 преимуществ, вместе с тем, что более интересно, 4 из 5 недостатков к ней не относятся, чем не могут похвастаться другие NoSQL-базы.

Давайте пройдёмся по этим критериям.

5 преимуществ:


5 слабых мест:


Рассмотрим каждое преимущество по очереди:


Что касается слабых мест:


По сумме всех характеристик бесплатная БД GlobalsDB идеальный кандидат для бизнесов, которым нужна NoSQL-технология, но при этом требуется взрослый, быстрый и надёжный продукт.

Простой способ перехода на коммерческий продукт Caché даёт доступ к дополнительным возможностям и высокотехнологичной NoSQL-функциональности.

Моделирование различных типов NoSQL-баз.

Продолжение. Часть 2.
@inetstar
02.07.2013 13:26 UTC
Первоисточник