嵌入式数据库
SQLite、Berkeley DB、Derby、H2、HSQL DB
-
SQLite: SQLite是一种非常流行的文件型数据库,它是一款轻量级、高性能、开源的嵌入式数据库引擎。SQLite采用C语言编写,可以在各种操作系统上运行,并且支持大多数标准SQL语法。
SQLite 是 D.RichardHipp 用一个小型的C库开发的一种强有力的嵌入式关系数据库,虽然功能较 Berkeley DB(商业数据库)稍显逊色,但它简单易学、速度较快,同时提供了丰富的数据库接口,提供了对 SQL92 的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。
SQLite则不得不依赖文件系统锁。它无法支持同时访问数据库的多个进程。 因此,SQLite并不是写密集型部署的首选。而且完全没有用户认证。然而,对于简单的查询,几乎没有什么并发性的查询,SQLite的性能是很高的,这得益于它的设计思想避免了将数据传递给其他进程的开销。 -
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操作系统 以及实时操作系统。 -
Apache Derby 可以说是 100% 由 Java 编写的一款数据库,以前名称为IBM Cloudscape, 是Apache软件基金会开发的关系型数据库管理系统(RDBMS),它的特点是可以嵌入到Java程序中,用于在线事务处理。它的磁盘空间占用率非常小: 3.5M左右。而且是开源免费的,非常小巧,核心部分derby.jar只有 2M!很多人可能觉得 Derby 不是很热门,但 Derby 已经开发了将近二十年!
-
H2 是一款纯java编写的另一款嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中,同时还提供了非常友好的基于 web 的数据库管理界面。
它可以嵌入到Java应用程序中,也可以在客户端-服务器模式下运行。
h2 作为嵌入式数据库的新秀,主要优势:超轻量级,可以支持内存模式,高效高速,能支持基本的全文搜索,同时与 mysql 数据库兼容性最强,一般使用场景最多的就是在开发环境上进行回归测试使用。
网上有很多开发者拿它与 derby 做对比,称它与 mysql 数据库兼容性强,口碑较好。
-
HSQLDB(HyperSQL DataBase)是一个使用 Java 语言编写的开源关系型数据库,遵循自由的 BSD 协议。纯 Java 实现,jar 文件只有 1.5 MB 左右,支持 JRE 6 以上环境。基于对数据库理论和 SQL 标准的深入研究创建的原创产品;广泛支持 SQL: 2016 标准语法,包括大多数可选功能;很多开源和商业产品都内置了一个 HSQLDB 数据库,包括 Apache ManifoldCF、OpenOffice、LibreOffice、Kepler、JBoss、Volt DB、Mathematica、Jira、Confluence、TeamCity 等。HSQLDB 拥有 20 多年的开发历史,最初由 Thomas Mueller 创建,他也是另一个嵌入式数据库 H2 的创始人。
-
UnQLite是由 Symisc Systems公司出品的一个嵌入式C语言软件库,它实现了一个自包含、无服务器、零配置、事务化的NoSQL数据库引擎。UnQLite是一个文档存储数据库,类似于MongoDB、Redis、CouchDB等。同时,也是一个标准的Key/Value存储,与BerkeleyDB和LevelDB等类似。UnQLite是一个嵌入式NoSQL(键/值存储和文档存储)数据库引擎。不同于其他绝大多数NoSQL数据库,UnQLite没有一个独立的服务器进程。UnQLite直接读/写普通的磁盘文件。包含多个数据集的一个完整的数据库,存储在单一的磁盘文件中。数据库文件格式是跨平台的,可以在32位和64位系统或大端和小端架构之间,自由拷贝一个数据库。
-
esProc SPL:如果要为 Java 小微型应用提供数据处理和计算能力,还有一个更好的选择:esProc SPL。esProc SPL 一个开源的数据处理引擎,架构简单,集成方便,可持久化存储数据,有足够的计算能力,这些特点与 SQLite 类似。SPL 架构简单,不用配置服务、节点、集群,只要引入 SPL 的 Jar 包,就可以部署在 Java 环境中。SPL 提供了 JDBC 接口,可以方便地集成到 Java 应用中,简单的查询类似 SQL。
数据库服务器
PostgreSQL和MySQL的对比
MySQL是一个纯粹的关系型数据库,但PostgreSQL是一个对象关系型数据库或ORDBMS,具有表继承和函数重载等功能。SQL,即结构化查询语言,是PostgreSQL和MySQL中与关系型数据库管理系统交互的通用语言。
MySQL是用C/C++编写的,而Postgres是用C编写的。 MySQL不支持级联,而Postgres支持。
MySQL允许的索引类型是二进制搜索树,而Postgres支持许多这种索引类型,包括GIN和Hash。MySQL使用传输层安全(TLS)协议来保证安全,而Postgres使用SSL协议。
MySQL数据库不支持高级数据类型,但Postgres允许高级数据类型,包括用户定义的数据类型。
PostgreSQL的point-in-time recovery(PITR)是非常棒的特性,这是个灵活的高可用特性,提供了诸如针对失败恢复创建热备份以及快照与恢复的能力。
华为GaussDb
华为自研的数据库gaussdb的优势有:1、高性能;2、分布式架构;3、多模型支持;4、高可靠性;5、安全性;6、弹性计算能力;7、全球化支持;8、生态系统整合。
GaussDB和鲲鹏芯片,欧拉操作系统拥有更加紧密的合作关系,能够基于更底层的芯片架构,组网形态,系统兼容来进行性能,可靠性方面的优化。是其他友商的数据库系统难以具备的强大底座优势。
它同时也是华为研发资源投入最多,研究最深入的全自研数据库系统,在全球范围内拥有50+以上的博士天团,以及300+的内核研发人员,为打造业务最高标准的分布式数据库产品提供了持续动力。
GaussDB在华为云上拥有两种部署形态:集中式和分布式。其中集中式版本拥有开源生态,用户可以通过开源网站直接下载,该版本华为以完全开放的态度,支持跟业内更多伙伴合作,促成更加广阔的商务模式。作为国内唯一开源数据库,也是华为开源、开放、不LOCKIN单一厂商的最佳证明。
NoSQL
MongoDB: MongoDB是一种文档型数据库,它采用BSON(Binary JSON)格式存储数据,并且支持类似SQL的查询语言。MongoDB适用于数据量较大、需要高性能读写操作的场景,比如Web应用程序、日志管理等。
Redis: Redis是一种基于内存的数据存储系统,支持多种数据结构(包括字符串、哈希表、列表、集合等),并且具有高性能和可扩展性。Redis可以作为缓存、消息队列等多种用途。
CouchDB: CouchDB是一种基于文档的数据库,它以JSON格式存储数据,并且支持类似MapReduce的查询方式。CouchDB具有分布式特性,支持数据同步和复制,适用于需要数据可靠性和高可用性的场景。
LevelDB: LevelDB是Google开发的一种键值对存储数据库,采用C++语言编写,支持多种操作系统。LevelDB具有高性能和可靠性,适用于需要快速读写数据的场景,比如网络爬虫、日志分析等。