Golang Go语言中轻量级单机时序数据库推荐?Go优先

发布于 1周前 作者 songsunli 来自 Go语言

在做一个单机数据收集的工具,有几个需求:

  1. 时序
  2. 有数据过期机制,或循环写入
  3. 类似 SQLite 一样的轻量级库

看了下 RRD 的 Go 绑定,貌似有平台依赖,InfluxDB 有些重了,打点数据量大概每秒 5~8 个左右,大神们是否有更好的家伙推荐?


Golang Go语言中轻量级单机时序数据库推荐?Go优先
17 回复

influxdb 吧,没啥重度啊,很简单的东西,不过耗内存

更多关于Golang Go语言中轻量级单机时序数据库推荐?Go优先的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


因为是一个通用型 Agent,可能会放在非自己产品部管辖的产品中,开一个单独的 DB 服务出来,别人会比较排斥

influxdb 2 年了,很好用,使用恰当就很稳定

boltdb 有内置的数据过期策略吗?

etcd 是用这个吧

普罗米修斯( prometheus ),主页 https://prometheus.io

写入到自己能管辖的 DB 里不就好了?

#7 这个只是个监控平台

badger 简单的 kv,有 ttl 机制

给人家上一个 agent 已经很反感了,为了这个 agent 再上个 db 服务,这项目回做死的(TvT)

监控平台的数据源就是一个典型 time series database 的应用场景,prometheus 主要应用在监控报警场景,包括 influxdb 也是,但 promethues 本身是一个 tsdb。著名的 grafana 监控展示软件的数据源默认是 influxdb,现在也支持 prometheus 了。

prometheus 对需要自己设置 timestamp 的场景不支持

仅供参考,那就看看别的吧

我推荐 badger
优点:
- 轻量不需要部署
- 备份数据拷贝即可
- 性能怪兽(比 boltdb 强太多)
- SSD 有优化

缺点:
- 不支持集群
- 不支持多个应用同时读写
- 不支持时序

我觉得时序的话可以通过 prefix 来控制,实现起来也比较简单

badger 的 performance 了解一下

环境 32G 内存 500GSSD
数量 400m key value
时间 00:33:15

针对Golang中的轻量级单机时序数据库推荐,以下是一些专业的建议:

  1. TimescaleDB:虽然是PostgreSQL的扩展,但针对时间序列数据进行了优化,提供了高性能、高可用性和自动压缩的特性。TimescaleDB支持PostgreSQL的所有功能,并且可以通过扩展API与Go语言进行交互,非常适合处理大量时间序列数据的应用场景。
  2. NutsDB:一款纯Go语言编写的轻量级且高性能的内嵌式持久化key-value数据库。它支持ACID事务,保证了数据的完整性和一致性。NutsDB安装简单,配置灵活,支持多种数据操作,如插入、查询、更新和删除等,非常适合对数据准确性有着极高要求的应用。
  3. Badger:一个纯Go实现的快速嵌入式K/V数据库,针对LSM tree(Log-Structured Merge-tree)做了优化,能够在某些情况下提供非常好的性能。与Google的C++版本相比,它提供了相同的功能,但是用Go语言编写,便于在Go项目中集成。

在选择时,建议根据项目需求,如数据模型的复杂性、性能要求、持久化需求等,来选择合适的数据库。以上推荐的数据库都各有优势,可以根据具体情况进行评估和选择。

回到顶部