Rust中的还原店V1.4.0已释放
#news #database #rust #reductstore

我很高兴地宣布,我们已经完成了从C ++到生锈的迁移,并发布了完全用Rust写的稳定版本(v1.4.0)。 ðÖ©

这不是一件容易的事。经过六个星期的编码,我们遇到了许多回归和行为变化。我需要发布两个Alpha和两个Beta版本,并进行生产测试以清理数据库。现在,它终于准备好了!

打破变化

不幸的是,当您使用完全不同的堆栈重写应用程序时,保持相同的行为并不容易。因此,必须对API进行一些更改。在C ++版本中,JSON响应是以表示字符串的整数发送的。

GET http://127.0.0.1:8383/api/v1/info
{
   "bucket_count":"1",
   "defaults":{
      "bucket":{
         "max_block_records":"1024",
         "max_block_size":"64000000",
         "quota_size":"0",
         "quota_type":"NONE"
      }
   },
   "latest_record":"1400081",
   "oldest_record":"1",
   "uptime":"6",
   "usage":"717458496",
   "version":"1.4.0-beta.2"
}

我将Protobuf用作存储引擎中的元数据的快速二进制序列化器,用于HTTP通信。官方的C ++ Protobuf实现使用整数字符串,因为它可以相信(我同意)JavaScript无法正确处理大整数,至少不能开箱即用。但是,当我搬到Prost!时,整数将作为实际整数发送。我围绕客户端SDK的这种变化进行了工作,但这仍然是一个打破的变化,对于可能带来的任何不便,我深表歉意。我可以称为Rust版本v2.0,但是数据格式是相同的,并且兼容。因此,我决定将主要版本保存,以使其破坏数据兼容性的更改,用户需要相应地迁移。

连续查询

除了Rust的安全性和安全性外,此版本还可以连续查询。这使您可以订阅新的更改,并且与MQTT或KAFKA订阅类似。虽然这可能不是一个完全替代品,但对变化的迅速反应对于许多应用程序至关重要。它也可用于将还原店与其他技术集成在一起。例如,您可以订阅新记录,并将其标签发送到时间序列数据库(TSDB)以进行长期存储。这是一个简单的python示例,演示了如何订阅从现在开始进行的所有更改,以使用good标签等于True

async for record in bucket.subscribe(
    "entry-1",
    start=int(time_ns() / 10000),
    poll_interval=0.2,
    include=dict(good=True),
):
    print(
        f"Subscriber: Good record received: ts={record.timestamp}, labels={record.labels}"
    )

所有客户端SDK均已更新

由于API的变化,我们将SDK更新为v1.4.0。它们与最新的还原器发行版完全兼容。在这里检查:

下一步是什么?

我们已经计划了版本v1.5.0,并将实现以下功能:

  • 将小记录批量记录到一个请求中可以使写作和阅读小斑点更有效。 #236
  • 头部端点可以阅读记录的元数据而不下载其内容。,#214
  • 和Rust Client SDK !!!,#289

希望您发现此版本有用。如果您有任何疑问或反馈,请不要犹豫在Discord或通过就GitHub进行讨论。

感谢您使用ReductStore