Представлен (http://nuvolabase.blogspot.com/2012/10/released-orientdb-v-1...) релиз системы управления базами данных OrientDB 1.2 (http://www.orientdb.org/), которая объединяет в себе возможности документо-ориентированной и графо-ориентированной БД (http://ru.wikipedia.org/wiki/%D0%91%D0%B...). Даже при работы с документ-ориентированными данными взаимодействие между документами обрабатывается как в графо-ориентированной БД с определением прямых связей между записями. При этом, можно в считанные миллисекунды пройти по цепочке содержимого деревьев и графов, как целиком так и частями. Дополнительно поддерживается интерфейс объектно-ориентированной БД, который работает поверх документо-ориентированного слоя. Код (http://code.google.com/p/orient/) OrientDB написан на языке Java и распространяется под лицензией Apache. OrientDB отличается высокой скоростью работы, на обычном оборудовании позволяя сохранять до 150 000 записей в секунду. При тестировании производительности, один сервер с OrientDB оказался способен заменить собой 125 серверов MySQL. Распределённая сеть серверов способна обеспечить хранение до 9.223.372.036 миллиардов записей и 19.807.040.628.566.084 Тб данных. Оперирующий запросами ключ/значение кластер OrientDB может состоять из тысяч узлов, используя для организации единого хранилища алгоритм распределённой хэш-таблицы (DHT). Для непосредственного хранения данных используется собственный алгоритм RB+Tree, сочетающий в себе особенности Red-Black Tree и B+Tree, что позволяет добиться вдвое меньшего потребления памяти при сохранении скорости Red-Black Tree за счёт балансировки операций добавления и обновления данных.
Среди добавленных в OrientDB 1.2 улучшений:
- Поддержка (http://nuvolabase.blogspot.it/2012/09/orientdb-supports-func...) функций, выполняемых на стороне сервера (аналог хранимых процедур). Для написания серверных функций предлагается использовать язык JavaScript;- Ограничение (http://nuvolabase.blogspot.it/2012/10/orientdb-supports-new-...) доступа на уровне записей, что позволяет разделить граф на части, каждая из которых имеет свой уровень доступа с разными правами на создание, удаление, чтение и обновление записей;- В систему профилирования добавлена поддержка генерации снапшотов;- JMX (http://en.wikipedia.org/wiki/JMX) оформлен в виде плагина, который не устанавливается по умолчанию;- Реализована поддержка автоматического перестроения индекса схемы данных в процессе перезапуска после краха или экстренного завершения работы;- В реализацию SQL добавлены: команда EXPLAIN для профилирования выражений; новое ключевое LET для установки контекстных переменных; поддержка указания подзапросов в конструкции CREATE EDGE;
- В объектно-ориентированном интерфейсе JPA добавлена поддержка настройки правил именования объектов;- Поддержка абстрактных классов;- Для ускорения запросов обеспечена поддержка частичной передачи полей;- Возможность автоматического создания резервных копий в заданные моменты времени.
Основные особенности OrientDB:
- Полная поддержка ACID транзакций;
- Поддержка подмножества (http://code.google.com/p/orient/wiki/SQLQuery) языка SQL для выполнения запросов c использованием конструкции SELECT (OrientDB не является реляционной БД, поэтому в полной мере все возможности SQL не поддерживает);
- Поддержка хранения данных без описания предварительной схемы, с описанием полной структуры или в смешанном режиме;
- 100% совместима со стандартом TinkerPop Blueprints для графо-ориентированных БД;
- Поддержка языка запросов Gremlin (https://github.com/tinkerpop/gremlin/wiki);
- Нативно поддерживает HTTP, RESTful и JSON протоколы без использования сторонних компонентов;
- Возможность работы как в режиме встраивания в другие приложения, так и в качестве выделенного сервера;
- Возможность отката внесённых в документ локальных изменений (ODocument.undo);
- Имеет очень малый размер и не имеет сторонних зависимостей;
- Поддерживается строгая политика разграничения доступа на основе ролей и полномочий пользователей;
- Дистрибутив полностью самодостаточен;
- Поддерживает отказоустойчивые конфигурации и репликацию (архитектура OrientDB изначально рассчитана на мультимастер репликацию);
- Поддержка запуска скриптов на стороне сервера (Server Side Scripting);
- Доступна коммерческая поддержка.
URL: http://code.google.com/p/orient/
Новость: http://www.opennet.dev/opennews/art.shtml?num=35058