Venice是一个衍生的数据存储平台,提供以下特性:
上述情况使得 Venice 特别适合作为支持特征存储的有状态组件,例如 Feathr。 AI 应用程序将 ML 训练作业的输出输入 Venice,然后查询数据以供在线推理工作负载使用。
威尼斯是一个横跨离线、近线和在线世界的系统,如下图所示。
Venice 写入路径可以分为三个粒度:完整数据集交换、将许多行插入现有数据集以及更新某些行的某些列。 Hadoop 和 Samza 支持所有三种粒度。此外,任何服务都可以使用 Online Producer 库异步生成单行插入和更新。下表总结了各个平台支持的写操作:
Hadoop | 萨姆扎 | 任何服务 | |
---|---|---|---|
完整数据集交换 | ✅ | ✅ | |
将一些行插入现有数据集中 | ✅ | ✅ | ✅ |
更新某些行的某些列 | ✅ | ✅ | ✅ |
此外,写入操作的三种粒度都可以混合在单个数据集中。除了行插入或行更新之外还获得完整数据集交换的数据集称为混合数据集。
作为将存储配置为混合存储的一部分,一个重要的概念是回滚时间,它定义了最近的实时写入应回滚多远并应用于换入的新一代数据集之上。
利用这种机制,可以将流处理作业的输出叠加在批处理作业的输出之上。如果使用部分更新,则可以实时更新某些列,而批量更新某些列,并且这两组列可以根据需要重叠或不相交。
写入计算包括两种操作,可以对与给定键关联的值执行:
注意:目前,写计算仅支持与主动-被动复制结合使用。对主动-主动复制的支持正在开发中。
Venice 支持以下读取 API:
访问威尼斯数据有两种主要模式:
下表总结了客户的特征:
网络跳数 | 典型延迟 (p99) | 国家足迹 | |
---|---|---|---|
瘦客户端 | 2 | < 10 毫秒 | 无国籍 |
快速客户端 | 1 | < 2 毫秒 | 最小(仅路由元数据) |
达芬奇客户端(RAM + SSD) | 0 | < 1 毫秒 | 有界 RAM,SSD 上的完整数据集 |
达芬奇客户端(全内存) | 0 | < 10 微秒 | RAM 中的完整数据集 |
所有这些客户端共享上述相同的读取 API。这使用户能够更改其成本/性能权衡,而无需重写其应用程序。
开源威尼斯博客和会议演讲是概述威尼斯可以支持哪些用例和规模的良好起点。有关更多威尼斯帖子、讲座和播客,请参阅我们的“了解更多”页面。
请参阅 Venice 快速入门来创建您自己的 Venice 集群并尝试一些功能,例如创建数据存储、批量推送、增量推送和单次获取。我们建议坚持使用我们最新的稳定版本。
请随意使用我们的社区与社区互动:
关注我们,了解更多有关威尼斯项目和社区的进展: