当前位置: 首页 > news >正文

基于文件的本地数据库组件 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

相关文章:

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

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

日志记录功能

需求描述: 1,可记录页面操作模块、按钮的日志记录 2,记录详细的指定操作数据日志 3,记录的数据可能需要查询表 4,需要考虑到扩展性及个性化定制 表结构设计: CREATE TABLE YES_DEV.T_COMM_OPERATION_LOG (ID BINARY_BIGINT NOT NULL,OPERATOR VARCHAR(128),OPERATION_MO…...

Android中的多线程与线程池详解

Android中的多线程与线程池详解 一、技术难点 在Android开发中,多线程和线程池是处理复杂任务、提高应用性能和响应性的关键技术。然而,这些技术也带来了一些技术难点。 1. 多线程技术难点 线程同步:多线程环境下,数据访问的同…...

使用LangChain+Ollama自己做的一个和大语言模型聊天的网站支持上下文对话,学习记录。

0.引言 在自己学习的过程中可以自己做一个和聊天大模型对话的一个小网站,成就感不亚于人生第一次跑完10km。 1.项目介绍 前端代码:Vue3, MarkDownIT. 后端代码:Python3, Fernet库, OpenAPI, LangChain, Ollama. Ollama 本地模型的部署和管理…...

excel数据透视

Excel中,数据透视图(PivotChart)和数据透视表(PivotTable)是两个紧密相关的工具,用于分析数据。数据透视表是数据透视图的数据源,也就是说,数据透视图是基于数据透视表中的数据创建的…...

七、(正点原子)Linux并发与竞争

Linux是多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。 一、并发与竞争 1、简介 并发就是多个…...

vue2+TS,el-table表格单选的写法

1.打开表格 //父组件引入 <customerChoose ref"customerChooseRef" onSure"setOrderInfoFn"></customerChoose>//子传父&#xff0c;接收值&#xff0c;操作private async setOrderInfoFn(data) {this.form.customerId data.idthis.form.cu…...

北邮《计算机网络》蒋老师思考题及答案-传输层

蒋yj老师yyds&#xff01; 答案自制&#xff0c;仅供参考&#xff0c;欢迎质疑讨论 问题一览 传输层思考题P2P和E2E的区别使用socket的c/s模式通信&#xff0c;流控如何反映到编程模型三次握手解决什么问题举一个两次握手失败的例子为什么链路层是两次握手而非三次&#xff1f;…...

学懂C#编程:常用高级技术【元组的详细使用】——利用元组获取多个返回值

C#常用高级技术——利用元组获取多个返回值 在C# 7.0及更高版本中&#xff0c;您可以使用元组&#xff08;Tuples&#xff09;来实现这种返回多个值的方法。您提供的代码片段是正确的&#xff0c;它定义了一个名为Calculate的方法&#xff0c;该方法接受两个整数参数a和b&#…...

解决IDEA使用卡顿的问题,设置JVM内存大小和清理缓存

解决IntelliJ IDEA中卡顿问题&#xff0c;可以尝试以下几个常见且有效的步骤&#xff1a; 1 增加IDEA的JVM内存分配&#xff1a; 位于IDEA安装目录的bin文件夹下&#xff0c;找到对应的操作系统配置文件&#xff08;idea64.exe.vmoptions&#xff08;Windows&#xff09;或id…...

Python爬虫从入门到入狱之爬取知乎用户信息

items中的代码主要是我们要爬取的字段的定义 class UserItem(scrapy.Item):id \ Field()name \ Field()account\_status \ Field()allow\_message\ Field()answer\_count \ Field()articles\_count \ Field()avatar\_hue \ Field()avatar\_url \ Field()avatar\_url\_template…...

apk反编译修改教程系列-----去除apk软件更新方法步骤列举 记录八种最常见的去除方法

在前面几期博文中 有说明去除apk软件更新的步骤方法。我们在对应软件反编译去除更新中要灵活运用。区别对待。同一个软件可以有不同的去除更新方法可以适用。今天的教程对于软件更新去除列举几种经常使用的修改步骤。 通过基础课程可以了解 1-----软件反编译更新去除的几种常…...

SpringMVC系列六: 视图和视图解析器

视图和视图解析器 &#x1f49e;基本介绍&#x1f49e; 自定义视图为什么需要自定义视图自定义试图实例-代码实现自定义视图工作流程小结Debug源码默认视图解析器执行流程多个视图解析器执行流程 &#x1f49e;目标方法直接指定转发或重定向使用实例指定请求转发流程-Debug源码…...

MySQL数据备份的分类

MySQL数据库的备份 在我们使用MySQL数据库的过程中&#xff0c;一些意外情况的发生&#xff0c;有可能造成数据的损失。例如&#xff0c;意外的停电&#xff0c;不小心的操作失误等都可能造成数据的丢失。 所以为了保证数据的安全与一致性&#xff0c;需要定期对数据进行备份。…...

node+nginx实现对react进行一键打包部署--windows版

文章目录 nodenginx实现对react进行一键打包部署--windows版1.功能展示及项目准备1.1功能展示 1.2 项目准备1.2.1技术点1.2.2安装相关配置(windows) 2.实现2.1 实现思路2.2 实现步骤2.1 项目准备2.1.1 创建env文件2.1.2 创建api/index.js文件2.1.3 添加解决跨域代码 2.2 项目实…...

【机器学习】基于Gumbel-Sinkhorn网络的“潜在排列问题”求解

1. 引言 1.1.“潜在排列”问题 本文将深入探索一种特殊的神经网络方法,该方法在处理离散对象时展现出卓越的能力,尤其是针对潜在排列问题的解决方案。在现代机器学习和深度学习的领域中,处理离散数据一直是一个挑战,因为传统的神经网络架构通常是为连续数据设计的。然而,…...

create-react-app创建的项目中设置webpack配置

create-react-app 创建的项目默认使用的是 react-scripts&#xff08;存在于node_modules文件夹中&#xff09;来处理开发服务器和构建&#xff0c;它内置了一些webpack相关配置。一般不会暴露出来给开发者&#xff0c;但是在有些情况下我们需要修改下webpack默认配置&#xff…...

【ai】tx2 nx :安装torch、torchvision for yolov5

torchvision 是自己本地构建的验证torchvision nvidia@tx2-nx:~/twork/03_yolov5/torchvision$ nvidia@tx2-nx:~/twork/03_yolov5/torchvision$ python3 Python 3.6.9 (default, Mar 10 2023, 16:46:00) [GCC 8.4.0] on linux Type "help", "copyright",…...

【报错】在终端中输入repo命令后系统未能识别这个命令

1 报错 已经使用curl命令来下载repo工具,但是在终端中输入repo命令后系统未能识别这个命令。 2 分析 通常是因为repo...

【机器学习】K-Means算法详解:从原理到实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 K-Means算法详解&#xff1a;从原理到实践引言1. 基本原理1.1 簇与距离度量1.2 …...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...