Project Icon

talaria

分布式高可用时序数据库与事件摄取平台

Talaria是为大数据系统设计的分布式时序数据库。它既可作为事件摄取平台,又可用作热数据存储,每小时可查询2-3TB数据,具有低延迟和低成本特点。Talaria支持SQL查询,兼容多种工具生态系统,并提供多种存储接口。通过Presto Thrift连接器,可与Presto无缝集成。作为开源项目,Talaria为用户提供了灵活的部署选项和自定义可能性,特别适合需要快速处理和查询大量时序数据的场景。

Talaria

测试 发布 Go 报告卡 Docker 拉取次数

这个仓库包含了 TalariaDB 的一个分支,它是一个分布式、高可用、低延迟的时间序列数据库,适用于大数据系统。它最初是在 Grab 公司设计和实现的,每天处理数以百万计的交易和连接,这需要一个可扩展的数据驱动决策平台。

简介

TalariaDB 帮助我们克服了从大量数据中检索和处理信息的挑战。它满足了我们每小时需要查询至少 2-3 TB 数据的需求,同时保持可预测的低查询延迟和低成本。最重要的是,它与不同工具的生态系统非常兼容,让我们能够使用 SQL 查询数据。

基于原始设计,我们将 Talaria 扩展为两种可能的设置方式:

  1. 作为事件摄取平台。这允许你从几乎任何地方使用简单的 gRPC 端点来跟踪事件。
  2. 作为热数据存储。这允许你查询热数据(例如最近 6 小时),这些数据会经过数据管道并最终在压缩后存储到你的数据湖中。

Talaria 围绕事件数据模型设计。事件本质上是一组键值对,但为了保持一致性,我们需要定义一组常用的键。 每个事件将包含以下内容:

  • 哈希键(例如:使用 "event" 键)。这代表事件的类型,可以用源作用域(例如 "table1")作为前缀,并使用点作为逻辑分隔符。分隔和命名空间不是必需的,但强烈建议使用,以使你的系统更易于使用。
  • 排序键(例如:使用 "time" 键)。这代表更新发生的时间,以 Unix 时间戳(精确到源允许的程度)表示,编码为 64 位整数值。
  • 其他键值对将表示各列的不同值。

以下是描述表更新事件的有效负载示例:

数据类型
eventtable1.updatestring
time1586500157int64
column1hellostring
column2{ "name": "roman" }json

Talaria 支持 stringint32int64boolfloat64timestampjson 数据类型,这些类型用于构建可以暴露给 Presto/SQL 的列。

使用 Talaria 进行事件摄取

如果你的组织需要一个可靠且可扩展的数据摄取平台,你可以将 Talaria 设置为这样的平台。主要优势是这种平台成本效益高,不需要复杂的 Kafka 设置,甚至还提供实时查询功能(如果你同时指向一个 Presto)。基本设置允许你从几乎任何地方使用简单的 gRPC 端点来跟踪事件。

替代文本

要将 Talaria 设置为摄取平台,你需要指定一个表(在本例中为 "eventlog"),并在配置中启用 compaction,类似于以下内容:

mode: staging
env: staging
domain: "talaria-headless.default.svc.cluster.local"
storage:
  dir: "/data"
tables:
  eventlog:
    compact:                               # 启用压缩
      interval: 60                         # 每60秒压缩一次
      nameFunc: "s3://bucket/namefunc.lua" # 文件名函数
      s3:                                  # 输出到 Amazon S3
        region: "ap-southeast-1"
        bucket: "bucket"
...

设置完成后,你可以直接将 gRPC 客户端(参见 protobuf 定义)指向摄取端点。请注意,我们还在此仓库中提供了一些预生成或预制的摄取客户端。

service Ingress {
  rpc Ingest(IngestRequest) returns (IngestResponse) {}
}

以下是当前支持的输出接收器及其示例配置列表:

对于 Microsoft Azure Blob Storage 和 Azure Data Lake Gen 2,我们支持跨多个存储账户进行写入。 我们支持两种模式:

  1. 随机选择,每次写入随机指向一个存储账户,你只需指定存储账户列表即可。
  2. 加权选择,为每个存储账户分配一组权重(正整数),每次写入根据指定的权重指向一个存储账户。

以下是加权选择的示例:

- azure:
    container: a_container
    prefix: a_prefix
    blobServiceURL: .storage.microsoft.net
    storageAccounts:
        - a_storage_account
        - b_storage_account
    storageAccountWeights: [1, 2]

随机选择和加权选择对某些关键场景特别有用:

  • 高吞吐量部署,其中Talaria生成的I/O超过了存储账户的限制。
  • 在具有多个VPN链接的内部端点上部署时,您希望将网络流量分散到多个网络链接上。

使用Talaria进行热数据查询

如果您的组织需要查询热数据(例如最近n小时的数据)或正在传输的数据(即正在摄入的数据),您还可以配置Talaria使用内置的Presto Thrift连接器将其提供给Presto。

替代文本

在下面的示例配置中,我们设置了一个s3 + sqs写入器,用于从S3存储桶持续摄取文件,并设置了一个将暴露给Presto的"eventlog"表。

mode: staging
env: staging
domain: "talaria-headless.default.svc.cluster.local"
writers:
  grpc:
    port: 8080
  s3sqs:
    region: "ap-southeast-1"
    queue: "queue-url"
    waitTimeout: 1
    retries: 5
readers:
  presto:
    schema: data
    port: 8042
storage:
  dir: "/data"
tables:
  eventlog:
    ttl: 3600         # 数据保留1小时
    hashBy: event
    sortBy: time
...

设置好Talaria后,您需要使用Thrift连接器配置Presto与其通信。您需要确保:

  1. 在属性文件中,您已配置通过kubernetes负载均衡器与Talaria通信。
  2. Presto可以直接访问节点,无需通过负载均衡器。

完成这些操作后,您应该能够通过Presto查询您的数据。

select *
from talaria.data.eventlog
where event = 'table1.update'
limit 1000

将文件摄入Talaria

要从存储URL(如S3或Azure Blob Storage)摄入现有的ORC、CSV或Parquet文件,请使用Talaria文件摄入客户端:

https://github.com/atris/TalariaFileIngestionClient

快速开始

最简单的入门方式是使用提供的helm chart

贡献

我们欢迎贡献,请随时提交拉取请求,我们会尽快审核。TalariaDB由以下人员维护:

许可证

TalariaDB根据MIT许可证授权。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号