5个最流行的可用于移动开发的嵌入式数据库简介

2023-11-17

嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求。目前有几种嵌入式数据库,你可以在移动应用程序中使用。让我们来看看这些最流行的数据库。

数据库

数据类型存储

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

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操作系统 以及实时操作系统。

Couchbase Lite

CouchbaseLite

Couchbase Lite是一个为满足在线和离线的移动应用所开发的超轻量的,可靠的,并且安全的JSON数据库。即使在最不确定的网络条件下,亦可以给您的移动应用提供富有成效的和可靠的信誉。除此之外,’同步门户’功能亦可以提供协作, 社交互动或者是用户的更新。

Couchbase移动平台的亮点

JSON Anywhere

使用专为面向对象的移动应用设计的灵活的数据模型,即时适应你的应用程序需要而无需大幅改动应用程序。

易于同步 (轻松同步)

只须几行代码就可以同步就绪;使开发者可以更专注于应用开发本身,而非同步问题。

原生 APIs

使用专门为iOS和Android优化的API管理移动数据库

REST APIs

基于你的开发需求, REST APIs 提供了一种替代的访问方法。

LevelDB

leveldb

LevelDB是Google开源出的一个Key/Value存储引擎,它采用C++编写的,支持高并发访问和写入,特别适合对于高写入业务环境。对于LevelDB的概览可以参考数据分析与处理之二(Leveldb 实现原理)对LevelDB的一个描述,本文的图解更多的是LevelDB的一个实现层的纠缠,版本为LevelDB 1.7.02。

LevelDB存储主要分为SSTable和MemTable,前者为不可变且存储于持久设备上,后者位于内存上并且可变(在LevelDB中有两 个MemTable,一个为当前写入MemTable,另一个为等待持久化的不可变MemTable)。首先来看SSTable的实现层分析。

SQLite

sqlite

SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 – 只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。

UnQLite

unqlite

UnQLite是,由 Symisc Systems公司出品的一个嵌入式C语言软件库,它实现了一个自包含无服务器零配置事务化的NoSQL数据库引擎。UnQLite是一个文档存储数据库,类似于MongoDBRedisCouchDB等。同时,也是一个标准的Key/Value存储,与BerkeleyDBLevelDB等类似。

UnQLite是一个嵌入式NoSQL(键/值存储和文档存储)数据库引擎。不同于其他绝大多数NoSQL数据库,UnQLite没有一个独立的服务器进程。UnQLite直接读/写普通的磁盘文件。包含多个数据集的一个完整的数据库,存储在单一的磁盘文件中。数据库文件格式是跨平台的,可以在32位和64位系统或大端小端架构之间,自由拷贝一个数据库。UnQLite的主要特点,如下:

  1. `无服务器`数据库引擎。
  2. `事务化`(ACID)数据库。
  3. `零配置`。
  4. `单一数据库文件`,不使用临时文件。
  5. `跨平台`的`文件格式`。
  6. UnQLite是一个自包含的C语言程序库,`无任何外部依赖`。
  7. 标准的`Key/Value`存储。
  8. 基于`Jx9`的`文档存储`(JSON)数据库。
  9. 支持`游标`,满足线性记录遍历。
  10. `插件式`运行时可交换存储引擎。
  11. 支持`磁盘持久化`和`内存模式`的数据库。
  12. 内建强大的磁盘存储引擎,支持`O(1)`查询。
  13. `线程安全`,完全可重入。
  14. 简单、清晰,很容易使用的`API`。
  15. 支持`TB(Terabyte)尺寸`的数据库。
  16. 采用`BSD开源许可协议`。
  17. 合并:UnQLite和Jx9相关所有C源代码文件,都合并到`单一的文件中`。
  18. 很好的`在线支持`。

可以通过UnQLite特点一页,了解更多的细节。(想想:有几分SQLite的味儿?)

UnQLite是,一个自包含的C库,无外部依赖。它要求非常小的外部库或来自操作系统的支持。特别适合应用于嵌入式设备,也适用于应用程序内部(那些需要运行于大量的计算机,而无需修改各种配置)。

UnQLite是,100%手工编码,使用ANSI C,线程安全,完全可重入,编译无需修改,而且可运行于绝大多数的平台,包括受限的嵌入式设备,仅需要一个C编译器。UnQLite已经在非常广泛的平台 进行了测试,包括Windows和UNIX系统,特别是Linux、FreeBSD、Oracle Solaris及Mac OS X。

UnQLite是,一个标准的key/value存储,与BerkeleyDB和LevelDB等相似。但是,拥有更加丰富的特性集,包括支持事务 (ACID),并发读等。在KV存储下,键和值都被视为简单的字节数组,所以内容可以是任何东西,包括ASCII字符串、二进制对象和磁盘文件等。应用程 序,可以通过接口API来访问KV层,包括

 
 
  1. unqlite_kv_store() 
  2. unqlite_kv_append() 
  3. unqlite_kv_fetch_callback() 
  4. unqlite_kv_append_fmt() 
  5. unqlite_kv_delete() 

等等。

UnQLite用来在数据库中存储JSON文档(如,对象、数组、字符串等)的文档存储接口,是通过Jx9编程语言支撑/实现的。Jx9是一种嵌入式的脚本语言,也叫扩展语言,被设计用于通用过程化编程,具备数据表述的特性。Jx9是一个图灵完备(Turing-Complete),基于JSON的,动态类型编程语言,作为UnQLite内核的一个库而存在。

总之,UnQLite一块开源软件,在 2-Clause BSD协议下开放源代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5个最流行的可用于移动开发的嵌入式数据库简介 的相关文章

  • [MySQL]存储过程与函数

    文章目录 1 存储过程概述 1 1 含义 1 2 执行过程 1 3 好处 1 4 与视图 函数的对比 1 5 存储过程的分类 2 创建存储过程 2 1 语法 2 2 设置结束标志 2 3 创建存储过程示例 2 3 1 准备工作 2 3 2
  • sql自定义列名字统计数据

    SELECT 0 as status COUNT as statistic name1 AS copy FROM table WHERE status 0 UNION ALL SELECT 1 as status COUNT as stat
  • 记一次使用hive-jdbc+tomcat-jdbc连接(Connection)中断的处理过程

    现象描述 Hive环境一个数据库 拥有表8000 业务代码需要挨个desc tableName 来获取表信息 当程序运行到4000 左右 开始出现获取信息失败 查找原因 通过查看日志发现是连接已断开 具体如下 INFO org apache
  • LevelDB简介

    LevelDB简介 综述 leveldb整体架构 提供接口 db h 技术 memtable WAL sstable Manifest cache LRU cache LRU的优缺点 filter levelDB初始化 compaction
  • 翰高数据库安装连接

    1 背景 最近公司在做一个军用机场跑道异物检测设备 但是由于各国之间的关系紧张 军放要求我们软件做一个国产数据库的适配 经查阅才知道这个翰高数据库用的内核为postgresql 然后再这个基础上做了一定修改与优化 废话不多说 安排 2 数据
  • mysql查看数据库状态

    很赞的文章 https codeplayer vip p j7sc4 官方教程是最应该查看的文档 https dev mysql com doc refman 5 5 en show html 我真正关心的数据 比如一秒钟到底能插入多少行数
  • Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when tryin

    多线程在更新数据库时报死锁问题 死锁信息 1 TRANSACTION TRANSACTION 29285454235 ACTIVE 0 001 sec fetching rows mysql tables in use 3 locked 3
  • Mysql5.7报错get db conn fail this authentication plugin is not supported

    系统环境CentOS 6 x Mysql5 7 1 前言 在部署open falcon的时候 第一启动有很多模块都失败 查看log日志有如下报错 2019 01 04 10 33 13 db go 22 g InitDB get db co
  • Oracle查看用户所在的表空间

    oracle 查看表空间有哪些表 select from dba tables where tablespace name 表空间名 注意表空间名大小写敏感 select table name tablespace name from us
  • Redis为服务器设置密码

    以下以Windows版本为例 在 redis windows service conf 文件 设置 requirepass foobared requirepass 123456 masterauth
  • MySQL中select语句的执行顺序

    其实SQL语句并不是按照书写的顺序执行的 了解正确的执行顺序有助于我们更好的理解数据库 select语句的完整书写顺序如下 select distinct 字段列表 from 左表 连接类型 JOIN 右表 on 多表条件 where 条件
  • Elasticsearch 5.6.5 基础笔记(一) - 概念和安装

    概念 Elasticsearch 分布式 可扩展 实时的搜索与数据分析引擎 建立在全文搜索引擎库 Apache Lucene 基础之上 能胜任上百个服务节点的扩展 并支持 PB 级别的结构化或者非结构化数据 将所有的功能打包成一个单独的服务
  • Windows 下安装sql server 2016(附安装包资源)

    首先之前安装过sql server 但是只是在控制面板卸载的 请参考一下博文 完全卸载sql server windows 下如何完全卸载SQL server 这是我的安装包 需要的小伙伴可以自行取用 链接 https pan baidu
  • MYSQL数据库慢查询优化整理

    通常优化SQL的时候都需要查看慢查询日志 先找到查询慢的语句 再去进行优化 MYSQL开启慢查询日志 先查看是否开启了 登录MYSQL 输入以下模糊查询的语句show variables like query 可以看到红线中的三个属性 分别
  • MySQL C API

    Mysql API数据结构 Mysql API中用到了很多结构体等数据类型 下面就简单说说常用的几个数据结构的含义 至于它们的定义鸡啄米就不贴了 大家可以到Mysql提供的mysql h头文件中查看 MYSQL 连接数据库前 必须先创建MY
  • 内置数据库

    DERBY 完全使用java 开发 可以在任何存在合适的 Java 虚拟机的地方运行 不适用于在其他编程语言内置使用 HSQLDB Java内置的数据库 非常适合在用于快速的测试和演示的Java程序中 无需独立安装数据库 HSQLDB有三种
  • sqlServer将一个表中的字段更新到另一个表中

    将表2 中 evaluate 字段更新到表1 UPDATE dbo 表1 SET evaluate c evaluate FROM dbo 表2 c dbo 表1 i WHERE c id i indexId
  • Mongodb与MySQL的异同,使用场景,优缺点。。。

    Mongodb与MySQL的使用场景有什么不同 列出详细异同及各自的优缺点 两者对内在的要求如何 MongoDB与MySQL是两种不同类型的数据库管理系统 它们在使用场景 优缺点和内在要求上有很大的不同 使用场景的不同 MongoDB适合用
  • 数据库SQL中的三个语句:DROP、TRUNCATE 、DELETE 以上三种的区别? 效率?

    数据库SQL中的三个语句 DROP TRUNCATE DELETE 以上三种的区别 效率 DROP TRUNCATE和DELETE是数据库SQL中用于删除数据或表的三种不同语句 它们之间有以下区别 1 DROP DROP用于删除整个表 包括
  • InfluxDB学习笔记

    本博客是我在学习InfluxDB的时候 记录的笔记 大家可以看看参考学些 简介 简述 InfluxDB是一个由InfluxData开发的开源时序型数据 它由Go写成 着力于高性能查询与存储时序型数据 InfluxDB被广泛应用于存储系统的监

随机推荐

  • k-Means——经典聚类算法实验(Matlab实现)

    聚类算法 k Means实验 k 平均 k Means 也被称为k 均值 是一种得到最广泛使用的聚类算法 1 k Means算法以k为参数 把n个对象分为k个簇 使得簇内具有较高的相似度 实验目的 了解常用聚类算法及其优缺点 掌握k Mea
  • 迷你搜索引擎

    这几天在思考如何对项目做出扩展 当一个网站访问量上升之后随之而来的便是用户的大量交流 根据现在主流的交流方式来看 一般都是一个用户先进行发帖 然后其他用户在下面对之评论 评论系统暂且搁置一边不谈 现在有一个问题就是当帖子数量越来越多 如何快
  • vue使用loading加载

    1 效果 1649832674984 2 前言 在vue中提供v loading命令 用于div的loading加载 因为v loading需要绑定一个双向绑定的变量 因此会产生如果页面需要多个loading 则需要很多个变量 在此不必要的
  • 基于Flink+Hudi构建企业万亿级云上实时数据湖教程

    在工作中 我们发现AutoOptimize的优化 在一些场景中可以带来巨大的提升 其中的一些优化可以满足数仓的高性能查询需求 某些时候工程师需要对收集的数据 根据下游的不同场景处理需求 再次进行ETL处理 使得下游使用数据的时候 优化数据的
  • MRI-CEST原理与MRI几种序列

    目录 一 引言 二 核 磁 共振 三 CEST成像 四 弛豫模型 五 几种序列 一 引言 MRI核磁共振的基本原理为核 磁 共振 接下来会具体展开各个词的含义 而CEST成像则是基于Bloch McConnell方程 模拟化学交换的工具 因
  • 曲速未来 发布:区块链技术带来金融服务的信任变革

    区块链安全咨询公司 曲速未来 表示 近年来伴随着新技术的出现 创新资源流动加速 对全球的金融体系也带来了巨大的冲击 作为科技领域极具挑战性的创新之一 区块链 凭借其开放性 自治性 匿名性 不可篡改性等特点 带来了金融的信任变革 重构了传统金
  • conda更新软件包conda upgrade语句

    在虚拟环境中使用upgrade更新语句 例如更新tensorflow conda update tensorflow 要注意几个点 1 可能会更改相关的包的版本 它会检查该虚拟环境下conda环境中的包列表 并尝试更新其他的包来适应版本匹配
  • el-input系列(el-input、el-select等)palceholder 的样式设置

    el input系列所有带有palceholder的 修改palceholder的样式 为了避免样式污染 对placeholder先包一个父类 谷歌浏览器 父类 deep input webkit input placeholder col
  • 高等数学——驻点,拐点,极值点

    一 定义不同 1 极值点 若f a 是函数f x 的极大值或极小值 则a为函数f x 的极值点 极大值点与极小值点统称为极值点 极值点是函数图像的某段子区间内上极大值或者极小值点的横坐标 极值点出现在函数的驻点 导数为0的点 或不可导点处
  • 活体检测的几种手段分析

    人脸识别是判断你是否是你 而活体检测则为了确定人脸识别的你是不是活得你 基于这样的特性 活体检测可以有效的避免视频 图片的技术BUG 活体检测的手段比较多 目前比较通用的是人脸活体检测 但是实际应用中的还有指纹识别 虹膜识别 静脉识别 通过
  • 生成一个6位数的随机密码,且需要包括字符、数字、特殊符号

    实现思路 第一步 6位数的密码 且需要包括字符 数字 特殊符号这三个元素 将三个元素组成6位时每个元素的排列组合列举出来 第二步 从第一步的排列组合中随机抽取一个排列组合类型 i j k 第三步 从所有的字符 数字 特殊符号中随机抽取i个字
  • Zookeeper到底是干嘛的

    在Zookeeper的官网上有这么一句话 ZooKeeper is a centralized service for maintaining configuration information naming providing distr
  • 数据集笔记:杭州 & 上海 地铁客流数据

    数据集地址 PVCGN data at master liuwj2000 PVCGN github com 1 数据集介绍 从5 15到23 30的地铁乘客流量预测 使用前四个时间间隔 15分钟 x 4 60分钟 的地铁乘客流量 进 出流量
  • Python(1)--Python安装目录介绍

    DLLs Python 自己使用的动态库 Doc 自带的 Python 使用说明文档 include 包含共享目录都是 h的文件 Lib 库文件 放自定义模块和包 pip 安装下载的包会放这Lib site packages 这个路径可以修
  • 云原生微服务应用的平台工程实践

    作者 纳海 01 微服务应用云原生化 微服务是一个广泛使用的应用架构 而如何使得微服务应用云原生化却是近些年一直在演进的课题 国内外云厂商对云原生概念的诠释大同小异 基本都会遵循 CNCF 基金会的定义 云原生技术有利于各组织在公有云 私有
  • 形态学的图像处理

    数字形态学是图像处理与分析领域的重要工具之一 数学形态学可以用来解决抑制噪声 特征提取 边缘检测 图像分割 形状识别 纹理分析 图像恢复与重建 图像压缩等图像处理问题 本文将会对形态学的图像处理进行一些通俗的原理解释和Matlab代码验证
  • 初始C语言——数组的行和列互换

    define CRT SECURE NO WARNINGS 1 防止visual studio2013以上版本scanf报错 vc6 0环境可忽略 include
  • 小案例:页面滚动事件以及导航栏点击

    HTML html实现方法一 导航栏a标签href 要与下列div中id属性对应 点击a标签即可滑动到对应id的div div class navbar 导航栏 ul class rightheader li a class page sc
  • 5G承载网络技术发展趋势

    导读 随着5G建设的日渐加快 5G与云网融合共生互促 推动承载网络技术不断发展演进 云网融合必将成为行业高质量发展的必然趋势 当前云网融合面临着新需求与新挑战 5G承载网络技术在确定性保障 定制化服务和智能管控运维等技术方面也面临着新的发展
  • 5个最流行的可用于移动开发的嵌入式数据库简介

    嵌入式数据库是轻量级的 独立的库 没有服务器组件 无需管理 一个小的代码尺寸 以及有限的资源需求 目前有几种嵌入式数据库 你可以在移动应用程序中使用 让我们来看看这些最流行的数据库 数据库 数据类型存储 License 支持平台 Berke