Я использую слой OLP Volatile в качестве бэк-энда панели мониторинга в реальном времени (средняя частота обновления составляет около 5 секунд).Данные разделены по идентификаторам источника, и набор идентификаторов источника сильно меняется со временем.
Я понимаю, что рекомендуется в документации - publish
разделы вашего изменчивого уровня;однако, в отличие от upload
, publish
- это дорогостоящая операция, и я считаю, что она не предназначена для выполнения каждые несколько секунд.
Итак, что я делал до сих пор, я пропускаю publish
при записи данных на слой:
val writeEngine =
DataEngine().writeEngine("hrn:of:my:catalog", new StableBlobIdGenerator(123L))
writeEngine.put(
NewPartition(
partition = "source-id-1",
layer = "my-volatile-layer",
data = someData
)
)
и считывании данных с использованием того же blobIdGenerator
, что и априори:
readEngine
.getDataAsBytes(new ReferencePartition(
version = 123L,
partition = "source-id-1",
layer = "my-volatile-layer",
dataHandle = (new StableBlobIdGenerator(123L)).generateBlobId(NewPartition(
partition = "source-id-1",
layer = "my-volatile-layer",
data = NewPartition.ByteArrayData(Array.emptyByteArray)
))
))
Я понимаю, что воспринимаю слой Volatile как-хранилище значений ключей памяти, и я понимаю, что не смогу увидеть свои данные в интерфейсе консоли OLP;но программно данные все еще загружаются и читаются.Это законное использование API Volatile?