基于文件的本地数据库组件 DuckDB, ChDB, SQLite, LevelDB, RocksDB

OLTP 与 OLAP 的区别:

  • OLTP(on-line transaction processing) 联机事务处理,主要就是一些传统的数据库,比如 Mysql。
  • OLAP(On-Line Analytical Processing) 联机分析处理,主要应用在大数据分析处理领域,比如 Clickhouse。

SQLite

这个是使用最广泛的基于文件的本地数据库,兼容SQL,在一些桌面程序,安卓软件上使用广泛,缺点是不支持并发写,实际上本地应用也不需要什么并发,将写操作做好串行处理即可。

DuckDB

目标是称为分析领域(OLAP)的SQLite,本地数据库,已经在DBeaver中支持,支持SQL(它的SQL设计参照的 PostgreSQL,但又不完全是,在有些地方与Mysql不一样),支持 CSV, JSON, Parquet 等文件格式。

https://github.com/duckdb/duckdb

https://duckdb.org/docs/api/go

https://duckdb.org/docs/api/python/overview

ChDB

由国内大佬 auxten 开发,相关介绍 https://zhuanlan.zhihu.com/p/642345300

也是一个 OLAP 领域的本地数据库,底层是集成的 ClickHouse Engine,用户不需要安装 ClickHouse 软件和服务,性能却非常炸裂。默认是python版本的,也提供了Golang版本。其团队已加入 ClickHouse ,可保证持续更新和优化。按照作者所说实上单机版的 chDB 在大多数场景下竟然比上百台服务器组成的 Hive 运行速度要快得多

chDB 跟 clickhouse-local 很像,但是 chDB 是嵌入(embeded)到你的应用中的。

Features

  • In-process SQL OLAP Engine, powered by ClickHouse
  • Serverless. No need to install or run ClickHouse services
  • Minimized data copy from C++ to Python with python memoryview
  • Input & Output support Parquet, CSV, JSON, Arrow, ORC and 60+more formats
  • Supports Python DB API 2.0, example and custom UDF Functions
  • Library bindings for Python, Go, Rust, NodeJS, Bun
  • Apache License, Version 2.0

那么,为什么不直接使用已经完备的ClickHouse系统呢,毕竟包装一层会面临非常多的问题需要解决。我们可以从 ClickHouse 的论坛上找到答案 https://clickhouse.com/blog/welcome-chdb-to-clickhouse,大概意思就是原本clickhouse的使用场景是大数据集群的实时数据分析,但是随着DuckDb的流行,他们才意识到这种小数据集的使用场景还是很多的,为了完善clickhouse的生态,他们迅速收购了chDB,实际上 Auxten 开发 chDB 的初衷就是满足自己训练模型的需要,不想花那么多时间和资源去搭建clickhouse服务。

https://github.com/chdb-io/chdb

https://github.com/chdb-io/chdb-go

https://doc.chdb.io/#/

LevelDB

LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

是一个本地K-V数据库。

https://github.com/google/leveldb

RocksDB

是一个本地K-V数据库,它居然是在早期的 LevelDB 的基础上演变而来的。

https://github.com/facebook/rocksdb

相关推荐
夜光小兔纸22 分钟前
oracle查询出表中某几个字段值不唯一的数据
数据库·sql·oracle
deadknight92 小时前
Oracle密码过期处理方式
数据库·oracle
Ljubim.te2 小时前
数据库第01讲章节测验(选项顺序可能不同)
数据库
吱吱喔喔2 小时前
数据分表和分库原理
数据库·分表·分库
快乐非自愿2 小时前
KES数据库实践指南:探索KES数据库的事务隔离级别
数据库·oracle
一只fish2 小时前
Oracle的RECYCLEBIN回收站:轻松恢复误删对象
数据库·oracle
weixin_440401692 小时前
分布式锁——基于Redis分布式锁
java·数据库·spring boot·redis·分布式
TOR-NADO2 小时前
数据库概念题总结
数据库·oracle
云计算练习生2 小时前
理解MySQL核心技术:存储过程与函数的强大功能
数据库·mysql·存储过程·函数·mysql函数
zengson_g3 小时前
当需要对大量数据进行排序操作时,怎样优化内存使用和性能?
java·数据库·算法·排序算法