Автор оригинала: Dassi Orleando.
1. Обзор
OrientDB — технология базы данных с открытым исходным кодом Multi-Model NoS’L, предназначенная для работы с График , Документ , Ключевые значения , Геопространственные и Реактивные модели при управлении запросами с S’L синтаксис.
В этой статье мы будем освещать настройку и использовать API OrientDB Java.
2. Установка
Во-первых, нам нужно установить бинарный пакет.
Давайте загрузим последнюю стабильную версию OrientDB ( 2.2.x на момент написания этой статьи).
Во-вторых, нам нужно распаковать его и переместить его содержание в удобный каталог (с ORIENTDB_HOME ). Пожалуйста, не забудьте добавить бен папка к переменным среды для любого простого использования командной строки.
Наконец, мы должны редактировать orientdb.sh файл, расположенный в $ORIENTDB-HOME/bin путем заполнения местоположения ( ORIENTDB_HOME ) каталога OrientDB на месте ORIENTDB_DIR а также системного пользователя, которого мы хотели бы использовать вместо USER_YOU_WANT_ORIENTDB_RUN_WITH .
Теперь у нас есть полностью работающий OrientDB. Мы можем использовать orientdb.sh с вариантами :
- начало : для запуска сервера
статус : для проверки статуса
- остановить : для остановки сервера
Пожалуйста, обратите внимание, что оба начало и остановка действия требуют пароля пользователя (тот, который мы создали в orientdb.sh файл).
Как только сервер запущен, он займет порт 2480. Поэтому мы можем получить доступ к нему локально, используя URL :
Более подробную информацию о ручной установке можно найти здесь.
Примечание: OrientDB требует Java версия 1.7 или выше.
Предыдущие версии доступны здесь .
3. Настройка API OrientDB Java
OrientDB позволяет java-разработчикам работать с тремя различными API, такими как:
- График API – графические базы данных
- Документ API – базы данных, ориентированных на документы
- API объекта — объекты, непосредственно связанные с документом OrientDB
Мы можем использовать все эти типы в рамках одной кодовой базы, просто интегрируя и используя OrientDB.
Давайте посмотрим на некоторые доступные банки мы можем включить в classpath проекта:
- orientdb-ядро –.jar : приносит основную библиотеку
- чертежи-основной .jar : принести адаптеры основных компонентов
- orientdb-graphdb–.jar : дает API базы данных Graph
- orientdb-объект – .jar : предоставляет API базы данных объектов
- ориентированный распределенный – .jar : предоставляет распределенный плагин базы данных для работы с кластером серверов
- orientdb-инструменты – .jar : передает команду консоли
- orientdb-клиент – .jar : предоставляет удаленного клиента
- orientdb-предприятие – .jar : позволяет проводить классы протоколов и сетей, разделяемые клиентом и сервером
Два последних требуются только в том случае, если мы обуговаем наши данные на удаленном сервере.
Начнем с проекта Maven и используем следующие зависимости:
com.orientechnologies orientdb-core 2.2.31 com.orientechnologies orientdb-graphdb 2.2.31 com.orientechnologies orientdb-object 2.2.31 com.tinkerpop.blueprints blueprints-core 2.6.0
Пожалуйста, проверьте центральный репозиторий Maven для последних версий Основные , ГрафДБ , Объект API и Чертежи-основные .
4. Использование
OrientDB использует TinkerPop Чертежи реализации для работы с графиками.
ТинкерПоп является графическим вычислительным каркасом, обеспечивающим множество способов построения графических баз данных, где каждая из них имеет свои реализации:
Кроме того, OrientDB позволяет работать с тремя видами Шемас независимо от типа API:
- Schema-Full — включен строгий режим, поэтому все поля указаны при создании класса
- Schema-Less – классы создаются без какого-либо конкретного свойства, поэтому мы можем добавлять их по мере это режим по умолчанию
- Schema-Hybrid – это смесь схемы-полной и схемы-менее, где мы можем создать класс с заранее определенными полями, но пусть запись для определения других пользовательских из них
4.1. Графический API
Поскольку это графическая база данных, данные представлены как сеть, содержащая Вертихес (узлы), взаимосвязанные Края (дуги).
В качестве первого шага давайте использовать пользовательский интерфейс для создания базы данных Graph под названием BaeldungDB с пользовательским администратор и пароль Администратора.
Как мы видим на последующем изображении, график был выбран в качестве типа базы данных, поэтому ее данные будут доступны в GRAPH Tab :
Теперь подключимся к нужной базе данных, зная, что ORIENTDB_HOME является переменной среды, которая соответствует папке установки OrientDB :
@BeforeClass public static void setup() { String orientDBFolder = System.getenv("ORIENTDB_HOME"); graph = new OrientGraphNoTx("plocal:" + orientDBFolder + "/databases/BaeldungDB", "admin", "admin"); }
Давайте инициируем Статья , Автор , и Редактор классы – показывая, как добавить проверку в свои поля:
@BeforeClass public static void init() { graph.createVertexType("Article"); OrientVertexType writerType = graph.createVertexType("Writer"); writerType.setStrictMode(true); writerType.createProperty("firstName", OType.STRING); // ... OrientVertexType authorType = graph.createVertexType("Author", "Writer"); authorType.createProperty("level", OType.INTEGER).setMax("3"); OrientVertexType editorType = graph.createVertexType("Editor", "Writer"); editorType.createProperty("level", OType.INTEGER).setMin("3"); Vertex vEditor = graph.addVertex("class:Editor"); vEditor.setProperty("firstName", "Maxim"); // ... Vertex vAuthor = graph.addVertex("class:Author"); vAuthor.setProperty("firstName", "Jerome"); // ... Vertex vArticle = graph.addVertex("class:Article"); vArticle.setProperty("title", "Introduction to ..."); // ... graph.addEdge(null, vAuthor, vEditor, "has"); graph.addEdge(null, vAuthor, vArticle, "wrote"); }
В фрагменте кода выше, мы сделали простое представление нашей простой базы данных, где:
- Статья является схема менее класс, который содержит статьи
- Писатель является схема-полный супер-класс, который содержит необходимую информацию писателя
- Писатель является подтипом Автор , который держит свои детали
- Редактор является схемой менее подтипа Писатель , который держит детали редактора
- последнееимя поле не было заполнено сохраненным автором, но все еще отображается на следующем графике
- у нас есть связь между всеми классами: Автор может писать Статья и должен иметь редактор
- Вертекс представляет сущность с некоторыми полями
- Край является сущностью, которая связывает два Вершин
Пожалуйста, обратите внимание, что, пытаясь добавить другое свойство к объекту полного класса, мы в конечном итоге с OValidationИсключение .
После подключения к нашей базе данных с Студия OrientDB , мы увидим график представления наших данных:
Давайте посмотрим, как иметь количество всех записей (vertices) базы данных:
long size = graph.countVertices();
Теперь давайте покажем только количество Писатель (Автор и редактор) Объектов:
@Test public void givenBaeldungDB_checkWeHaveTwoWriters() { long size = graph.countVertices("Writer"); assertEquals(2, size); }
На следующем этапе мы сможем найти все Писатель данные, используя следующее утверждение:
Iterablewriters = graph.getVerticesOfClass("Writer");
Наконец, давайте запросим для всех Редактор С уровень 7; здесь у нас есть только один, который соответствует:
@Test public void givenBaeldungDB_getEditorWithLevelSeven() { String onlyEditor = ""; for(Vertex v : graph.getVertices("Editor.level", 7)) { onlyEditor = v.getProperty("firstName").toString(); } assertEquals("Maxim", onlyEditor); }
Имя класса всегда указывается для запроса конкретной вертицы. Мы можем найти более подробную информацию здесь .
4.2. Документ API
Следующим вариантом является использование модели документов OrientDB. Это подвергает манипуляции данными с помощью простой записи с информацией, хранящейся в полях, где тип может быть текст, изображение или двоичная форма.
Давайте снова используем пользовательский интерфейс для создания базы данных под названием BaeldungDBTwo , но теперь с документ как тип:
Примечание: также этот API также может быть использован либо в схеме-полный, схема-менее или схема-гибридный режим.
Подключение к базе данных остается простым, так как нам просто нужно мгновенно ODatabaseDocumentTx объект, предоставить URL базы данных и учетные данные пользователя базы данных:
@BeforeClass public static void setup() { String orientDBFolder = System.getenv("ORIENTDB_HOME"); db = new ODatabaseDocumentTx("plocal:" + orientDBFolder + "/databases/BaeldungDBTwo") .open("admin", "admin"); }
Начнем с сохранения простого документа, автор информация.
Здесь мы видим, что класс был автоматически создан:
@Test public void givenDB_whenSavingDocument_thenClassIsAutoCreated() { ODocument doc = new ODocument("Author"); doc.field("name", "Paul"); doc.save(); assertEquals("Author", doc.getSchemaClass().getName()); }
Соответственно, подсчитать количество Авторы , мы можем использовать:
long size = db.countClass("Author");
Давайте снова запросим документы, используя значение поля, для поиска Автор ‘S объектов с уровень 7:
@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven() { for (ODocument author : db.browseClass("Author")) author.delete(); ODocument authorOne = new ODocument("Author"); authorOne.field("firstName", "Leo"); authorOne.field("level", 7); authorOne.save(); ODocument authorTwo = new ODocument("Author"); authorTwo.field("firstName", "Lucien"); authorTwo.field("level", 9); authorTwo.save(); Listresult = db.query( new OSQLSynchQuery ("select * from Author where level = 7")); assertEquals(1, result.size()); }
Аналогичным образом, чтобы удалить все записи Автор класса, мы можем использовать:
for (ODocument author : db.browseClass("Author")) { author.delete(); }
На студии OrientDB BROWSE Tab мы можем сделать запрос, чтобы получить все наши Авторская s объекты:
4.3. ОБЪЕКТ API
OrientDB не имеет объектного типа базы данных. Таким образом, API объекта опирается на базу данных документа.
В типе Object API все остальные концепции остаются неизменными только с одним дополнением – обязательный в POJO.
Начнем с подключения к BaeldungDBТри с помощью OObjectDatabaseTx класс:
@BeforeClass public static void setup() { String orientDBFolder = System.getenv("ORIENTDB_HOME"); db = new OObjectDatabaseTx("plocal:" + orientDBFolder + "/databases/BaeldungDBThree") .open("admin", "admin"); }
Далее, предполагая, что Автор является POJO используется для хозяй Автор данные, мы должны зарегистрировать его:
db.getEntityManager().registerEntityClass(Author.class);
Автор имеет getters и сеттеров для следующих полей:
- первоеимя
- последнееимя
- уровень
Давайте создадим Автор с многослойной инструкцией, если мы признали конструктора без арга:
Author author = db.newInstance(Author.class); author.setFirstName("Luke"); author.setLastName("Sky"); author.setLevel(9); db.save(author);
С другой стороны, если у нас есть другой конструктор, который принимает первоеимя , последнееимя , и уровень из Автор соответственно, моментация – это всего лишь одна строка:
Author author = db.newInstance(Author.class, "Luke", "Sky", 9); db.save(author);
Следующие строки используются для просмотра и удаления всех записей класса Автор:
for (Author author : db.browseClass(Author.class)) { db.delete(author); }
Чтобы подсчитать всех авторов, мы просто должны предоставить класс и экземпляр базы данных без необходимости писать запрос S’L:
long authorsCount = db.countClass(Author.class);
Аналогичным образом, мы запрашиваем авторов с уровень 7, как это:
@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven() { for (Author author : db.browseClass(Author.class)) { db.delete(author); } Author authorOne = db.newInstance(Author.class, "Leo", "Marta", 7); db.save(authorOne); Author authorTwo = db.newInstance(Author.class, "Lucien", "Aurelien", 9); db.save(authorTwo); Listresult = db.query(new OSQLSynchQuery ( "select * from Author where level = 7")); assertEquals(1, result.size()); }
Наконец, это официальный путеводитель который вводит некоторые расширенные использования API объектов.
5. Заключение
В этой статье мы видели, как использовать OrientDB в качестве системы управления базами данных с его API Java. Мы также узнали, как добавить проверку на полях и написать несколько простых запросов.
Как всегда, исходный код этой статьи можно найти более на GitHub .