OrientDB — начало

OrientDB - взгляд человека, который привык работать с реляционными базами данных.

Первое, что Вы наверное будете делать, это создавать базу, о доступных видах в OrientDB, о их плюсах и минусах можно почитать тут »

Во вторую очередь Вам нужно будет создать таблицу. В OrientDB таблицы это классы, ну а строки это объекты, да да, это то самое ООП. Для тех кто не вкурил почему это удобно (новичкам), просто когда будете читать документацию по OrientDB, понимайте под классом - таблицу. А еще можно использовать наследование одного класса от другого и даже можно создавать абстрактные классы (о них позже). 

Виды таблиц

  • Document - позволяет хранить данные очень гибко (см. ниже less)
  • Flat - нужен, когда Вам не нужны поля, индексация и схемы данных (см. ниже). Данный вид таблиц не поддерживает SQL-запрос, с таблицами работают только через Java. Плюсом этого вида является самая высокая скорость.

И так, т.к. я php-программист, то вид таблицы для меня Document, но какую схему таблиц (класса) нам выбрать:

Типы схем данных

Сначала на английском:

  • Schema-Full: enable the strict-mode at class level and set all the fields as mandatory
  • Schema-Less: create classes with no properties. Default mode is non strict-mode so records can have arbitrary fields
  • Schema-Hybrid, called also Schema-Mixed is the most used: create classes and define some fields but leave the record to define own custom fields

full — строго-структурированные данные (режим строго задает обязательные поля).

less — слабоструктури́рованные да́нные (полуструктурированные или плохо структурированные данные) — это форма структурированных данных, не соответствующая строгой структуре таблиц и отношений в моделях реляционных баз данных, тем не менее эта форма данных содержит теги и другие маркеры для отделения семантических элементов и для обеспечения иерархической структуры записей и полей в наборе данных. Таким образом, такой вид данных можно назвать бессхемным (schemaless), а структуру — самоописываемой.

mixed — смешанный тип данных (есть обязательные поля, но у некоторых строк есть собственные поля). По сути это full, но в нужных строках могут быть дополнительные поля, теги и др. маркеры. Т.е. без заполнения обязательных полей не обойтись, но можно добавить дополнительные поля в нужных строках.

Итак, Вы определились с типом класса (с видом таблицы), давайте теперь пару слов о строках (объектах).

Строки и обязательные поля

В OrientDB есть всегда присутсвующие поля (члены класса), это:

RecordID (@rid) — автоинкрементный идентификатор строки, записывается в формате #[<cluster>:<position>]

Record version (@version) — каждая строка в таблице имеет свою версию, т.е. версию изменения строки, автоматически увеличивается на еденицу при обновлении.

А теперь стоит рассказать немного о понимании процессов.

Хранение данных

OrientDB хранит информацию о Ваших данных в нескольких группах файлов:

OrientDB — начало

  • DataLocal - место где хранятся Ваши данные
  • ClusterLocal - место где хранится информация о DataLocal
  • TxSegment - место где хранятся данные о ходе открытых транзакций. В случае сбоя, данные будут восстановлены.

При этом, каждый класс (таблица) должен принадлежать к кластеру. Указывая кластер, мы указываем где будет хранится информация о добавленных записях (строках таблицы). Каждый класс имеет по крайней мере один физический кластер по умолчанию. В граф. мире класс должен наследоваться от субкласса (V)ertex - вершина или от (E)dge - ребро.

Разберем пример запроса, т.е. что сделает OrientDB если мы скажем ей:

SELECT country FROM myClass WHERE RecordID = #4:3

напомню, что #4:3 это #[<cluster>:<position>]

OrientDB — начало

 

Немного о файлах

ClusterLocal — может хранится в файлах или в памяти (без файлов).

Файлы — для хранения сегмента данных, используется несколько файлов (например таблица person):

  • person.0.ocl
  • person.och

Расширения файлов:

  • ocl - OrientDB Cluster
  • och - OrientDB Cluster Holes

В первом файле содержатся существующие данные, во втором информация об удаленных данных. Обратите внимание на '0' в имени первого файла, это последователность данных на текущем кластере. Вы можете разделить файл данных на несколько файлов. Это поведение зависит от конфигурации. Когда файл данных заполнен, создается новый файл.

TxSegment — для хранения сегмента данных, используется несколько файлов:

  • default.0.oda
  • default.odh

Расширения файлов:

  • oda - OrientDB DAta
  • odh - OrientDB Data Holes

По-умолчанию OrientDB создает сегмент данных с именем default.

В первом файле содержатся существующие данные, во втором информация об удаленных данных. Обратите внимание на '0' в имени первого файла, это последователность данных на текущем кластере. Вы можете разделить сегмент данных на несколько реальных файлов. Это поведение зависит от конфигурации. Когда файл сегмента данных заполнен, создается новый файл.

p.s. полезные понятия:

Семантика элемента — начальное смысловое значение элемента.

ACID транзакция — группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. ACID (Atomicity - атомарность, Consistency - согласованность, Isolation - изолированность, Durability - надежность).

Кластер в OrientDB —  грубо говоря, предварительно созданный файл обычно небольшого размера. Когда пишутся новые записи, то они редко требуют выделения нового места на ФС. Также для каждого кластера есть другой специальный кластер для удалённых записей. В него заносятся пометки о том, что такая-то запись удалена. Т.о. непосредственное добавление или удаление одной записи не приводит к выделению места на ФС.

Имя базы данных в OrientDB выглядит следующим образом:

<engine>:<db-name>

где:

  • engine — вид хранения данных
  • db-name is the database name and depends on the engine used (see below)

Подробнее про engine:

EngineОписаниеПример
remote

Это удаленный режим, база данных является общей для нескольких клиентов. Порт является необязательным и, если не указан, используется 2480. Синтаксис: remote:<server>:[<port>]/db-name.

remote:localhost/petshop
local

База данных лежит локально и OrientDB работает с ней как с встроенной. Это самый быстрый доступ, потому что позволяет избежать подключения к сети для передачи данных. Используя данный режим, убедитесь, что он либо находится в $ORIENT_HOME/databases или имеет символическую ссылку в той же папке. Если вы используете только прямое local/embedded подключение, то разместить базу данных можно в любом месте. В режиме local база данных не может быть открыта несколькими процессами (если вы хотите это, используйте remote). 

local:C:/temp/databases/petshop/petshop
plocal

Однако, plocal подразумевает расположение данных на кластерах (не на сегменте данных). Единственное, чем plocal похож на local, это использование локальной файловой системы для хранения данных. Надо заметить, что plocal поддерживает сжатие (по умолчанию использует Google Snappy или GZip). Кроме того, имеет журнал изменений (LOG) для восстановления в случае аварии. И не знаю почему, но авторы считают что plocal гораздо безопаснее, чем local.

plocal:C:/temp/databases/petshop/petshop
memory Все данные хранятся в памяти. memory:petshop

Важно: статья не дописана и в ней могут быть неточности, если с чем-то не согласны, давайте обсудим.

Оцени публикацию:
  • 11,52
Оценили человек: 11

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » MySQL »