Плагины постоянного хранения данных

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

Плагины постоянного хранения данных следуют шаблонам разработки Технологии доступа к данным (DAO).

Плагин постоянного хранения данных реализует интерфейс PersistencePlugin, который имеет единственный метод createDaoFactory(DaoFactory parent, ServerRuntimeConfig runtimeConfig, ServerConfig config). Этот метод должен возвращать экземпляр реализуемого классом интерфейса DaoFactory.

У интерфейса DaoFactory есть набор методов, которые возвращают особые создания технологии доступа к данным DAO (средства хранения), поддерживаемые плагином. Самые важные реализации DAO:

  • DAO свойств, реализованая интерфейсом PropertyDao. DAO отвечает за постоянное хранение значений переменных сервера.
  • DAO событий, реализованная интерфейсом EventDao. DAO поддерживает хранение, загрузку и управление постоянными событиями сервера.
  • DAO данных, реализованная интерфейсом DataDao. DAO поддерживает хранение и загрузку больших бинарных блоков данных.

Методы DaoFactory's start() и stop() вызываются во время стадий загрузки и отключения сервера соотвественно.

DAO свойств

У реализации DAO свойств есть методы для хранения и загрузки значений переменных сервера, также есть перераспределение этих значений с разными путями контекста и именами переменных. Это перераспределение будет происходить, если контекст переменной был изменен или перемещен.

См. Javadocs интерфейса PropertyDao для получения дополнительной информации о каждом методе.

Как правило, таблица данных DataTable должна в первую очередь связываться со строкой (посредством метода encode()), а затем с массивом байт, который будет храниться постоянно.

Некоторые значения переменных содержат большие вложенные бинарные блоки данных (экземпляры класса Data). Большинство реализаций должны быть извлечены как блоки Data из DataTable, представляющей значения переменных, а также сохранять их отдельно с помощью реализации DAO данных, доступной через родительский DaoFactory.

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

DAO событий

DAO событий отвечает за хранение, загрузку и управление событиями сервера, представленных экземплярами класса Event. Как правило, каждый Event должен быть конвертирован в PersistentEvent, чтобы он, в свою очередь, был конвертирован в массив байт, подходящий для постоянного хранения.

См. Javadocs интерфейса EventDao для получения дополнительной информации о каждом методе DAO событий.

Хранения событий

DAO событий во многом базируется на концепции Хранений событий. Хранение событий - это отдельный раздел средств хранения, предназначенный для хранения определенного набора событий, таких как таблица в реляционной БД или семейство колонок в БД NoSQL.

Хранения событий представлены классами, реализующими интерфейс EventStorage. Для получения дополнительной информации о хранениях событий и их параметрах см. раздел Хранения событий.

DAO событий должен возвращать реализацию интерфейса EventStorageManager, отвественного за управлениями хранениями событий. Несмотря на это, у интерфейса есть множество методов, его реализации должны быть унаследованы от AbstractEventStorageManager. Ниже представлены только два абстрактных метода для реализации:

void createStorage(EventStorage storage, boolean create)

Этот метод должен создавать новое пространство для хранения в хранилище, например, таблица базы данных или семейство колонок в NoSQL.

void dropStorage(EventStorage storage)

Этот метод должен удалять новое место хранения из хранилища. Например, он может отключить таблицу базы данных.

Обратите внимание, что абстрактная реализация EventStorageManager использует DAO свойств, чтобы сохранять информацию о доступных хранениях событий.

DAO данных

DAO данных отвечает за сохранение, загрузку и удаление больших бинарных блоков данных, представленных экземплярами класса Data. Каждый Data может быть закодирован как массив байтов (byte[]), которые должны храниться постоянно.

Каждый постоянно хранящийся блок данных подписан уникальным ID long, содержащимся в экземпляре Data.

См. Javadocs интерфейса DataDao для получения дополнительной информации о каждом методе.