5个用于移动开发的最流行数据库
嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求。目前有几种嵌入式数据库,你可以在移动应用程序中使用。让我们来看看这些最流行的数据库。
数据库
数据类型存储
License 支持平台
BerkeleyDB relational, objects, key-value pairs, documents AGPL 3.0 Android, iOS
Couchbase Lite documents Apache 2.0 Android, iOS
LevelDB key-value pairs New BSD Android, iOS
SQLite relational Public Domain Android, iOS, Windows Phone, Blackberry
UnQLite key-value pairs, documents BSD 2-Clause Android, iOS, Windows Phone
1. Berkeley DB
Berkeley DB 是由美国 Sleepycat Software 公司开发的一套开放源代码的嵌入式数据库管理系统(已被 Oracle 收购),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。
Berkeley DB(BDB)是一个高效的嵌入式数据库编程库,C语言、C++、Java、Perl、Python、Tcl 以及其他很多语言都有其对应的 API。Berkeley DB 可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB 支持让数千的并发线程同时操作数据库,支持最大 256TB 的数据,广泛用于各种操作系统,其中包括大多数类 Unix 操作系统、Windows 操作系统以及实时操作系统。
2. Couchbase Lite
Couchbase Lite 是一个为满足在线和离线的移动应用所开发的超轻量的,可靠的,并且安全的 JSON 数据库。即使在最不确定的网络条件下,亦可以给您的移动应用提供富有成效的和可靠的信誉。除此之外,’同步门户’功能亦可以提供协作, 社交互动或者是用户的更新。
3. LevelDB
LevelDB 是 Google 开源出的一个 Key/Value 存储引擎,它采用 C++ 编写的,支持高并发访问和写入,特别适合对于高写入业务环境。
对于 LevelDB 的概览可以参考数据分析与处理之二(Leveldb 实现原理)对 LevelDB 的一个描述,本文的图解更多的是 LevelDB 的一个实现层的纠缠,版本为 LevelDB 1.7.02。
LevelDB 存储主要分为 SSTable 和 MemTable,前者为不可变且存储于持久设备上,后者位于内存上并且可变(在 LevelDB 中有两个 MemTable,一个为当前写入 MemTable,另一个为等待持久化的不可变 MemTable)。首先来看 SSTable 的实现层分析。
4. SQLite
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的 SQL 数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保 SQLite 的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite 是绝对值得考虑。
5. UnQLite
UnQLite 是,由 Symisc Systems 公司出品的一个嵌入式C语言软件库,它实现了一个自包含、无服务器、零配置、事务化的NoSQL 数据库引擎。UnQLite是一个文档存储数据库,类似于 MongoDB、Redis、CouchDB 等。同时,也是一个标准的 Key/Value 存储,与 BerkeleyDB 和 LevelDB 等类似。
UnQLite 是一个嵌入式NoSQL(键/值存储和文档存储)数据库引擎。不同于其他绝大多数 NoSQL 数据库,UnQLite 没有一个独立的服务器进程。UnQLite 直接读/写普通的磁盘文件。包含多个数据集的一个完整的数据库,存储在单一的磁盘文件中。数据库文件格式是跨平台的,可以在32位和64位系统或大端和小端架构之间,自由拷贝一个数据库。