Pull to refresh

Данные в MarkLogic Server [Part2]

Reading time 2 min
Views 1.9K
Еще немного о том как MarkLogic Server хранит данные.

О форматах данных

MarkLogic Server – это XML база данных, но в дополнении к XML он может хранить JSON, текстовые и двоичные данные. При этом JSON документы трансформируются в XML при попадании в базу данных. Текстовые документы индексируются как текстовые XML объекты без “parent” объекта. Бинарные документы по умолчанию не индексированы, но существует возможность создать индекс их метаданных и извлеченного содержимого.

О индексах

Индексы в MarkLogic используются повсюду и делается это для увеличения производительности базы данных. Из коробки доступны Text index и Structure index, которые индексируют все XML данные и используются при выполнении XQuery запросов, что позволяет достичь высокой эффективности. Также доступны индексы метаданных: Collection Indexes, Directory Indexes, Security Indexes, Properties Indexes.

Стоит отметить, что индексы в MarkLogic Server могут превышать размер самих XML данных в 2 а то и в 3 раза. Но такая ситуация возможна только при большом количестве задействованных индексов. На это влияет еще и то, что MarkLogic сжимает XML данные при хранении. Из коробки MarkLogic, обычно, имеет небольшой размер индексов по отношению к исходным данным.

О внутреннем представлении

Рассмотрим чуть более подробно то как хранятся данные в MarkLogic Server. Главными здесь являются следующие понятия:

Database – это наивысшая абстракция над внутренним представлением данных в MarkLogic Server. Она предоставляет доступ к данным как к единой сущности не зависимо от механизмов масштабирования и внутреннего представления.

Объект Database объединяет в себе настройки безопасности, схемы xml документов, набор триггеров, настройки in-memory cache, индексы, опции регулирующие поиск, настройки журналирования, опции репликации, настройки backup’a и набор объектов Forest.

Forest – это объекты в которых хранятся данные и индексы. База данных может иметь более одного объекта Forest и располагаться они могут как на одном так и на разных серверах. Механизм “local-disk failover” манипулирует объектами Forest, для этого одному объекту Forest назначается один и более “replica forest” объектов, что позволяет повысить надежность.

Forest имеет значительно меньше настроек по сравнению с объектами Database. Для Forest можно настроить расположение данных на файловой системе “data directory”, указать расположение для хранения больших объектов “large data directory” или расположение так называемой “fast data directory”, т.е. директории на быстрой файловой системе. “fast data directory” используется для хранения журнала транзакции и фрагментов данных. Эта директория должна располагаться на устройстве хранения отличном от того на котором располагается “data directory”. При заполнении “fast data directory” большие объекты из неё сливаются с данными находящимися в “data directory”. Внутри Forest данные хранятся в Stand объектах.

Stand – Является составной частью Forest объектов. Каждый Stand представляет собой упакованный бинарный файл, хранящийся в поддиректориях объекта Forest. Сам же Stand объект состоит их XML фрагментов.
Tags:
Hubs:
+2
Comments 1
Comments Comments 1

Articles