阅读未发布的 Volatile 层分区是否违反最佳实践?
Is reading non-published Volatile layer partitions against the best-practice?
我正在使用 OLP Volatile 层作为实时仪表板的后端(平均更新节奏约为 5 秒)。数据按源 ID 分区,源 ID 集随时间变化很大。
我了解到这是 recommended in the documentation 到 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 控制台中看到我的数据 UI;但以编程方式,数据仍然可以上传和读取。这是对 Volatile 的 API 的合法使用吗?
即使没有发布元数据,也可以将易失性层用作 key-value 存储。只要知道数据句柄,就可以了。如果您需要按时间戳或分区 ID 查询(如果数据句柄未知),元数据很有用。
如果您确实选择发布易失性层的元数据,最有效的方法是简单地初始化发布并在添加或删除分区时上传元数据,只是不要提交发布作业以进行最终确定。
我正在使用 OLP Volatile 层作为实时仪表板的后端(平均更新节奏约为 5 秒)。数据按源 ID 分区,源 ID 集随时间变化很大。
我了解到这是 recommended in the documentation 到 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 控制台中看到我的数据 UI;但以编程方式,数据仍然可以上传和读取。这是对 Volatile 的 API 的合法使用吗?
即使没有发布元数据,也可以将易失性层用作 key-value 存储。只要知道数据句柄,就可以了。如果您需要按时间戳或分区 ID 查询(如果数据句柄未知),元数据很有用。
如果您确实选择发布易失性层的元数据,最有效的方法是简单地初始化发布并在添加或删除分区时上传元数据,只是不要提交发布作业以进行最终确定。