понедельник, 30 мая 2011 г.

OrientDB

OrientDB DBMS - это СУБД c открытым программным кодом (лицензия Open Source Apache 2), реализующая модель Not Only SQL.OrientDB относится к классу документо-ориентированных (Documet Store/Document based/Document oriented) СУБД , которые хранят коллекции пар ключ/значение, а внутри них рекурсивно коллекции коллекций.Как правило, для представления таких "документов" используются JSON-подобные (см. http://en.wikipedia.org/wiki/JSON), или XML-подобные структуры. OrientDB использует JSON и XML в оригинальном виде. Для обработки связей OrientDB имплементирует особенности графовых хранилищ (GraphDB).

Особенности
  • написана на Java, что обеспечивает кроссплатформенность.
  • простой интерфейс/протокол доступа,
  • хорошая горизонтальная масштабируемость и пропускная способность,
  • эффективное использование распределенных индексов и RAM для хранения данных,
  • возможность динамического определения различных атрибутов и схемы данных.
  • позволяет извлекать в графы из сотен связанных объектов быстрее, чем за 1 мс, в отличие от реляционных СУБД, использующих дорогостоящие JOIN'ы.
  • очень "легкая": полноценный OrientDB сервер занимает около 1 Мб.
  • не требует дополнительного программного обеспечения и библиотек.
  • SQL-friendly ;
  • репликация в последней на данный момент версии 
  • использует  SQL и native Java;
  • есть поддержка ACID транзакций.

Архитектура

OrientDB - документо-ориентированная СУБД. На ее основе были созданы Orient Key-Value Server и Orient Object Database. Класс ODatabase предоставляет основной интерфейс для работы приложений. ODatabase взаимодействует с реализацией класса OStorage, который отвечает за физическое хранение данных. Всего есть 3 вида реализаций:
- локальная: запись и чтение в локальной файловой системе;
- удаленная: работает как прокси, все запросы на отправку и получение идут через удаленный OrientDB сервер;
- в памяти: все данные хранятся в RAM, локальная файловая система не используется.

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

CAP

В соответствии с CAP теоремой Брюера, OrientDB отвечает требованиям CA.

Репликация
  • Репликация по типу "Master-Slaves". Один Master и N Slaves. При отказе Master'а, из Slave'ов выбирается новый Master.
  • IP мультикаст для обнаружения кластерных узлов.
  • Конфигурация узлов по TCP/IP (например, для Clouds, где нет поддержки IP multicast).
  • Два режима синхронизации: полная (full), когда БД сжимается и посылается по сети целикомwork, и частичная (partial) - отправляются только изменения, произошедшие с момента последней синхронизации.
  • Master OrientDB сервер использует дополнительную БД для хранения изменений до полной синхронизации.
  • Возможность отображения узлов из консоли, просмотр сообщений от кластеров, выбор нового Master вручную.
Запросы

OrientDB поддерживает запросы на java:

 List<ODocument> result = database.query(new ONativeSynchQuery<ODocument, OQueryContextNativeSchema<ODocument>>(database,                                 "Person", new OQueryContextNativeSchema<ODocument>()) {                         @Override                         public boolean filter(OQueryContextNativeSchema<ODocument> iRecord) {                                 return iRecord.field("city").field("name").eq("Rome").and().field("name").like("G%").go();                         };                 });

и SQL-запросы:


 List<ODocument> result = db.query(   new OSQLSynchQuery<ODocument>("select * from Animal where ID = 10 and name like 'G%'"));

Регистр ключевых слов не важен.
OrientDB поддерживает ACID транзакции.

Параметры записи на диск

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

Следует обратить внимание на параметры:
    - Synchronize all changes to the disk when any single-record is changed  (По умолчанию false.)
   -  Synchronize all changes to the disk when a transaction is committed (По умолчанию true.)

API

RESTful HTTP

OrientDB RESTful HTTP протокол позволяет обращаться к OrientDB серверу по HTTP протоколу.
OrientDB RESTful HTTP протокол использует 4 метода протокола HTTP:

   1. GET - извлечение данных из базы,
   2. POST - вставка данных в базу,
   3. PUT - изменение данных в базе (update),
   4. DELETE - удаление данных из базы.

Результаты - в формате JSON.

Java API

Для передачи данных между приложением и сервером OrientDB используется улучшенный протокол двоичной синхронной передачи данных для повышения производительности.
Доступ к БД реализован через Java API (c поддержкой схемы данных (full-schema mode)) или просто через ODatabaseDocumentPool (без схемы (less-schema mode)).

Комментариев нет:

Отправить комментарий