我使用 OLP Volatile 层作为实时仪表板的后端(平均更新节奏约为 5 秒)。数据按源 ID 划分,源 ID 集随时间变化很大。
我了解文档中建议将其用于publish
您的 volatile 层分区;但是,与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 控制台 UI 中看到我的数据;但以编程方式,数据仍然是上传和可读的。它是对 Volatile API 的合法使用吗?