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

【LevelDB 和 Sqlite】

关于 LevelDB的小总结:

LevelDB 和 SQLite 是两种不同类型的数据库:

1. LevelDB:

  • 特点:
  • NoSQL 数据库
  • 键值(Key-Value)存储
  • 由 Google 开发
  • 数据按键排序存储
  • 支持批量操作
  • 简单的 Get/Put/Delete 接口

示例操作:
key1 -> value1
key2 -> value2

2. SQLite:

特点:

  • 关系型数据库(SQL)
  • 表格结构存储
  • 支持 SQL 查询
  • 支持事务
  • 支持外键和索引

示例表:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);

3. 为什么 Chrome 选择 LevelDB:

性能好
简单高效
适合键值存储
内存占用小
适合浏览器环境

IndexedDB 的实现:
	Chrome: LevelDB
	Firefox: SQLite
	Safari: SQLite

所以 Chrome 选择 LevelDB 是因为它:

  • 更适合存储 Web 数据
  • 性能更好
  • 资源占用更少
  • 更简单的数据模型
Chrome 确实在早期使用的是 SQLite。
这个改变发生在 2011 年左右。
具体历史:
Chrome 数据存储演变
│
├── 2008-2011: SQLite
│   └── 用于所有本地存储(历史记录、书签等)
│
├── 2011: 开始转向 LevelDB
│   ├── Google 发布 LevelDB
│   └── Chrome 逐步采用
│
└── 现在: LevelDB
    ├── IndexedDB 后端存储
    ├── 历史记录
    └── 其他浏览器数据

但注意:
Chrome OS 仍然使用 SQLite 用于某些功能
某些特定功能可能仍在使用 SQLite
这个转换是渐进的过程
Chrome OS 使用 SQLite 的主要场景包括:
1. 系统功能:
- 系统设置数据库
- 用户账户信息
- 系统日志
- 系统更新记录
2.Android 应用支持:
Chrome OS
└── Android 子系统
    └── SQLite (Android 原生支持)
        ├── 应用数据
        ├── 内容提供者(Content Providers)
        └── 应用设置

3.特定应用场景:
- 文件系统元数据
- 搜索索引
- 本地媒体库
- 系统备份数据

4. 选择 SQLite 的原因:
- 需要复杂查询能力
- 需要事务支持
- 需要关系型数据结构
- 与 Android 生态系统兼容


而浏览器相关的功能(如 IndexedDB)仍使用 LevelDB:
Chrome OS
├── 系统层 (SQLite)
│   └── 系统功能和设置
│
└── 浏览器层 (LevelDB)
    └── Web 存储和缓存


Chrome/Chrome OS 存储引擎使用情况
│
├── SQLite 使用场景
│   ├── Chrome OS 系统层
│   │   ├── 系统设置
│   │   ├── 用户账户管理
│   │   ├── 系统日志
│   │   └── 系统更新记录
│   │
│   ├── Android 应用支持
│   │   ├── Android 应用数据
│   │   └── Content Providers
│   │
│   └── 其他特定功能
│       ├── 文件系统元数据
│       └── 本地媒体库索引
│
└── LevelDB 使用场景
    ├── 浏览器核心功能
    │   ├── IndexedDB 存储
    │   ├── 浏览历史
    │   ├── Cookie 存储
    │   └── 书签数据
    │
    ├── Web 应用数据
    │   ├── Service Worker 缓存
    │   ├── Web Storage
    │   └── Application Cache
    │
    └── 扩展相关
        ├── 扩展数据存储
        ├── 扩展设置
        └── 扩展状态


夜深啦,晚安 😴,🍀


http://www.kler.cn/a/500241.html

相关文章:

  • Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
  • 【计算机网络】lab3 802.11 (无线网络帧)
  • 从预训练的BERT中提取Embedding
  • DeepSeek:性能强劲的开源模型
  • Matplotlib 直方图:数据可视化基础
  • 芯片:CPU和GPU有什么区别?
  • 【了解到的与深度学习有关知识】
  • 逆向 易九批 最新版 爬虫逆向 x-sign ......
  • Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印 Pyside6版
  • An FPGA-based SoC System——RISC-V On PYNQ项目复现
  • 电商数据流通中的API接口技术:挑战与解决方案
  • 自动驾驶3D目标检测综述(七)
  • 爬虫基础之爬取某基金网站+数据分析
  • Golang学习笔记_21——Reader
  • 稀土化合物:引领科技创新,推动绿色发展
  • 2025 GitCode 开发者冬日嘉年华:AI 与开源的深度交融之旅
  • PySide6的常用小部件汇总
  • 多云架构下JuiceFS实现一致性与低延迟数据分发的深度解析
  • vue3模板语法+响应式基础
  • 带格式 pdf 翻译
  • Linux第一课:c语言 学习记录day06
  • Linux 虚拟机与windows主机之间的文件传输--设置共享文件夹方式
  • Node.js入门html,css,js 30年了nodejs环境 09年出现 15年
  • 24_自定义Redis缓存序列化机制
  • LLMSecOps:LLM和GenAI的安全解决方案