Плагины постоянного хранения данных
Плагины постоянного хранения данных реализуют хранение серверных конфигураций, событий и бинарных данных. В большинстве случаев плагины постоянного хранения данных решают даже самые сложные задачи хранения данных. Однако возможно реализовать дополнительный плагин хранения данных, который будет использовать любой особый тип технологии хранения данных в БД.
Плагины постоянного хранения данных следуют шаблонам разработки Технологии доступа к данным (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()
), а затем с массивом байт, который будет храниться постоянно.
![]() | Некоторые значения переменных содержат большие вложенные бинарные блоки данных (экземпляры класса Реализации DAO свойств должны также удалять блоки данных из переменной постоянного хранения, когда ее постоянное значение удаляется. |
DAO событий
DAO событий отвечает за хранение, загрузку и управление событиями сервера, представленных экземплярами класса Event
. Как правило, каждый Event
должен быть конвертирован в PersistentEvent
, чтобы он, в свою очередь, был конвертирован в массив байт, подходящий для постоянного хранения.
См. Javadocs интерфейса EventDao
для получения дополнительной информации о каждом методе DAO событий.
Хранения событий
DAO событий во многом базируется на концепции Хранений событий. Хранение событий - это отдельный раздел средств хранения, предназначенный для хранения определенного набора событий, таких как таблица в реляционной БД или семейство колонок в БД NoSQL.
Хранения событий представлены классами, реализующими интерфейс EventStorage
. Для получения дополнительной информации о хранениях событий и их параметрах см. раздел Хранения событий.
DAO событий должен возвращать реализацию интерфейса EventStorageManager
, отвественного за управлениями хранениями событий. Несмотря на это, у интерфейса есть множество методов, его реализации должны быть унаследованы от AbstractEventStorageManager
. Ниже представлены только два абстрактных метода для реализации:
| Этот метод должен создавать новое пространство для хранения в хранилище, например, таблица базы данных или семейство колонок в NoSQL. |
| Этот метод должен удалять новое место хранения из хранилища. Например, он может отключить таблицу базы данных. |
Обратите внимание, что абстрактная реализация EventStorageManager
использует DAO свойств, чтобы сохранять информацию о доступных хранениях событий.
DAO данных
DAO данных отвечает за сохранение, загрузку и удаление больших бинарных блоков данных, представленных экземплярами класса Data
. Каждый Data
может быть закодирован как массив байтов (byte[]
), которые должны храниться постоянно.
Каждый постоянно хранящийся блок данных подписан уникальным ID long
, содержащимся в экземпляре Data
.
См. Javadocs интерфейса DataDao
для получения дополнительной информации о каждом методе.