От переводчика
На мой взгляд на Хабре мало информации о бесплатной NoSQL-базе GlobalsDB. Оригинальная статья написана в августе 2011 года и ещё актуальна. Перед вами первая часть. Во второй части будет рассказано как с помощью GlobalsDB моделировать различные типы NoSQL-баз.
Введение
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 базу данных построенную на глобалах.
Глобалы:
Можете думать, что это автосохраняемые на диск ассоциативные массивы и вы недалеко уйдёте от истины.
Некоторые примеры глобалов:
Каждый глобал имеет имя (как и массивы имеют имена). Далее следуют несколько индексов, значения которых могут быть численными или строковыми. Вы можете иметь любое число индексов. Есть ограничение только на суммарную их длину, которое довольно велико.
Каждый элемент глобала (который определяется именем глобала и сочетанием индексов) хранит текстовую строку. Пустые строки разрешены.
Вы можете создавать или удалять элементы глобала тогда, когда вы хотите. Всё происходит динамически и не требует никаких объявлений или определения схем данных.
Все высокоуровневые абстракции и схемы данных находятся в голове разработчика, а база данных физически хранится в глобалах.
Глобалы не предоставляют вторичных индексов, поэтому для обеспечения высокоскоростного поиска и запросов разработчик должен создать и поддерживать дополнительные элементы в глобалах, которые будет играть роль вторичных индексов.
Глобалы чрезвычайно универсальны и могут быть легко использованы для моделирования всех 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.
На мой взгляд на Хабре мало информации о бесплатной NoSQL-базе GlobalsDB. Оригинальная статья написана в августе 2011 года и ещё актуальна. Перед вами первая часть. Во второй части будет рассказано как с помощью GlobalsDB моделировать различные типы NoSQL-баз.
Введение
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-масштабов:
- Много данных или Big Data. Самые большие веб-приложения (например Twitter, Facebook, Google) оперируют количеством данных, которое на несколько порядков больше, чем когда-либо ранее считалось доступным для баз данных
- Огромное число пользователей, исчисляемое миллионами, обращающимися к системе постоянно и одновременно
- Сложные структуры данных: обычно веб-приложения работают с чем-то посложнее обычных таблиц
Реляционные БД, доминировавшие начиная с 80-х годов прошлого века, при применении в Web-масштабах начали показывать свою слабость в этих трёх областях. Поэтому разработчики стали искать альтернативы.
Спрос рождает предложение: начали появляться NoSQL базы данных. Несмотря на разнообразие видов NoSQL баз все они имеют следующие общие черты:
- для обработки огромных объёмов информации она распределяется между серверами. Этот процеес называется шардинг (sharding)
- для обслуживания огромного числа пользователей нагрузка распределяется между серверами, т.е. используется параллельная обработка
- используется более простое, без заранее заданной схемы, устройство БД
Все самые успешные и наиболее известные NoSQL базы данных были разработаны с нуля в течении нескольких последних лет. Странно. Выглядит так что никто не поискал существующих, хорошо реализованных технологий БД, которые могли бы предоставить прочное основание для работы с Web-масштабами.
Эта статья призвана продемострировать вам, что GlobalsDB может стать прекрасной основой для создания NoSQL баз данных, использующих существующую, проверенную и оттестированную технологию.
GlobalsDB в сочетании с экcтремально высокой производительностью Node.JS предоставляет идеальную, мощную высокопроизводительную промышленную платформу для реализации NoSQL баз данных.
Краткий обзор глобалов
Ещё раз напомню под глобалами мы понимаем структуры для хранения данных, а под GlobalsDB базу данных построенную на глобалах.
Глобалы:
- не имеют заранее заданной структуры (sсhema-free). Глобалы в отличие от таблиц не нуждаются в определении (CREATE TABLE) прежде чем с ними можно начать работу.
- иерархически структурированы (речь о внутренней структуре каждого отдельного глобала)
- разреженные
- динамические
Можете думать, что это автосохраняемые на диск ассоциативные массивы и вы недалеко уйдёте от истины.
Некоторые примеры глобалов:
myTable["101-22-2238", "Chicago", 2] = "Some information"
account["New York", "026002561", 35120218433001] = 123456.45
Каждый глобал имеет имя (как и массивы имеют имена). Далее следуют несколько индексов, значения которых могут быть численными или строковыми. Вы можете иметь любое число индексов. Есть ограничение только на суммарную их длину, которое довольно велико.
Каждый элемент глобала (который определяется именем глобала и сочетанием индексов) хранит текстовую строку. Пустые строки разрешены.
Вы можете создавать или удалять элементы глобала тогда, когда вы хотите. Всё происходит динамически и не требует никаких объявлений или определения схем данных.
Все высокоуровневые абстракции и схемы данных находятся в голове разработчика, а база данных физически хранится в глобалах.
Глобалы не предоставляют вторичных индексов, поэтому для обеспечения высокоскоростного поиска и запросов разработчик должен создать и поддерживать дополнительные элементы в глобалах, которые будет играть роль вторичных индексов.
Глобалы чрезвычайно универсальны и могут быть легко использованы для моделирования всех 4-х типов NoSQL баз со сравнимой или во многих случаях значительно превосходящей производительностью:
- хранилищ Ключ/Значение (Redis, memcached)
- табличных/колоночных хранилищ (BigTable, Cassandra, SimpleDB)
- документо-ориентированных баз (CouchDB, MongoDB)
- графовых баз (Neo4j)
Во второй части будут показаны детальные примеры о том, как это сделать.
Производительность как у баз в 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 слабых мест:
- незрелость технологии
- поддержка
- аналитика и бизнес-аналитика
- администрирование
- число экспертов
Рассмотрим каждое преимущество по очереди:
- Эластичное масштабирование. Caché уже много лет имеет поддержку масштабирования на множество серверов, каждый из которых может быть обычной недорогой машиной.
Для Caché создана сетевая технология ECP, которая позволяет прозрачно работать с глобалами, которые физически распределены по многим серверам.
На текущий момент GlobalsDB не включает в себя ECP, но если потребуется эластичное масштабирование, то программы для GlobalsDB могут быть перенесены на Caché: Caché позволяет запускать любое приложение для GlobalsDB без всяких модификаций. - Много данных. GlobalsDB спроектирована для работы с такими объёмами данных, которые лежат далеко за пределами обычных реляционных баз данных. При этом с экстремально высокой производительностью.
- До свиданья, администраторы баз данных! Интересно, что компания Intersystems (поставщик Caché) использовала этот аргумент в маркетинге много лет. Известны системы на глобалах, которые работали безо всякого присмотра десятилетиями.
- Экономичность. GlobalsDB отлично работает на недорогом, обыкновенном оборудовании и выжимает из него максимальный уровень производительности. В системе здравоохранения Массачусета работали одновременно десятки тысяч пользователей в 1980-х и 1990-х годах на сетевом кластере из сотен обыкновенных PC, на которых под MS-DOS была запущена БД предшественница Caché.
- Гибкие модели данных. Это сама суть хранилища на глобалах, что и будет показано далее.
Что касается слабых мест:
- Незрелость технологии. В отличие от новых NoSQL-баз Caché имеет длинную родословную и выдающийся послужной список. На Caché работают огромные сложные базы данных в требовательных бизнес-отраслях. GlobalsDB, которая имеет тот же БД-движок, представляет собой быструю, экстремально надёжную и стабильную технологию, которую можно с уверенностью использовать в критически важных областях бизнеса.
- Поддержка. Caché доминирует в индустрии здравоохранения США и интенсивно используется в финансовой сфере. Одна из причин такого доверия — это качество коммерческой поддержки от InterSystems. GlobalsDB предоставляется бесплатно и безо всякой поддержки, однако если она потребуется, то приложения для GlobalsDB могут быть перенесены без всяких изменений на полностью поддерживаемый Caché.
- Аналитика и бизнес-аналитика. Интересно, что сейчас InterSystems широко рекламирует продукт под названием DeepSee. Он создан именно для аналитики и работает поверх Caché. Уже много лет к Caché можно подсоединиться с помощью инструментов бизнес-аналитики основанных на SQL. Так что если данная функциональность понадобится, то приложения для GlobalsDB могут быть без всяких изменений перенесены на Caché.
- Администрирование. GlobalsDB проста в установке и обслуживании, и, подобно Caché, может быть использована в ситуациях где есть всего несколько, если вообще есть, айтишников.
- Число экспертов. Это единственная область, где позиции GlobalsDB слабы. Число пользователей Caché постоянно растёт. Однако число опытных профессионалов, имеющих опыт работы с БД основанными на глобалах, очень мало по сравнению с количеством людей имеющих опыт работы с реляционными БД. Собственно говоря, одна из целей разработки GlobalsDB — это расширение сообщества разработчиков и пользователей, которые через GlobalsDB узнают о Caché.
По сумме всех характеристик бесплатная БД GlobalsDB идеальный кандидат для бизнесов, которым нужна NoSQL-технология, но при этом требуется взрослый, быстрый и надёжный продукт.
Простой способ перехода на коммерческий продукт Caché даёт доступ к дополнительным возможностям и высокотехнологичной NoSQL-функциональности.
Моделирование различных типов NoSQL-баз.
Продолжение. Часть 2.