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
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 的基础上演变而来的。