受欢迎的博客标签

Postgresql vs MongoDB vs Redis (Java嵌入式数据库H2介绍)

Published

Postgresql vs MongoDB vs Redis

MongoDB 最好的文档数据库。

Postgresql 最好的关系数据库。

 

如何选择

如果你在一个开发项目的开始阶段,试图通过敏捷的开发过程找出你的需求和数据模型,MongoDB将会大出风头,因为开发人员可以在他们需要的时候,自己重塑数据。MongoDB允许您管理任何结构的数据,而不仅仅是预先定义的表格结构。
如果你支持一个应用程序,你知道它需要扩展流量或数据大小(或两者都需要),并且需要跨区域分布数据本地或数据主权,MongoDB的扩展架构将自动满足这些需求。
如果你想要一个在每个公共云上都以相同方式工作的多云数据库,可以在特定的地理区域存储客户数据,并支持最新的无服务器和移动开发范例,MongoDB Atlas是正确的选择。
如果你是一个SQL商店,引入一个新的范例所花费的成本比上面提到的任何好处都要高,那么PostgreSQL是一个很可能满足你所有需求的选择。
如果你想要一个关系数据库,运行复杂的SQL查询,并与许多现有的基于表格、关系数据模型的应用程序一起工作,PostgreSQL可以完成这项工作。
如果你是一个创造性的SQL开发人员和想把SQL索引限制通过使用先进的技术,存储和搜索大量的结构化数据类型,创建用户定义的函数在不同的语言中,和调优数据库第n个学位,你可能能够更进一步,比任何其他RDBMS PostgreSQL。

Postgresql 不仅仅是 SQL 数据库

它可以存储 array 和 json, 可以在 array 和 json 上建索引, 甚至还能用表达式索引. 为了实现文档数据库的功能, 设计了 jsonb 的存储结构. 有人会说为什么不用 Mongodb 的 BSON 呢? Pg 的开发团队曾经考虑过, 但是他们看到 BSON 把 ["a", "b", "c"] 存成 {0: "a", 1: "b", 2: "c"} 的时候就决定要重新做一个 jsonb 了... 现在 jsonb 的性能已经优于 BSON.

 

MongoDB以名为BSON(二进制JSON)的二进制表示形式将数据存储为文档。

BSON包含了JSON数据中没有的数据类型(例如,datetime、int、long、date、浮点数、decimal128和字节数组),提供了对多种数字类型的严格类型处理,而不是通用的“数字”类型。

Across all benchmark types, it was found that as the datasets becomes bigger than the available memory capacity, the Postgres performance advantage grows over MongoDB.

detail:https://www.enterprisedb.com/news/new-benchmarks-show-postgres-dominating-mongodb-varied-workloads

一、H2数据库介绍 几个嵌入式数据库的对比 

常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL。

其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的客户端和服务器端。

H2的优势:

1、h2采用纯Java编写,因此不受平台的限制。

2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。

3、h2提供了一个十分方便的web控制台用于操作和管理数据库内容。

二、H2数据库下载和安装 2.1、H2数据库下载

H2数据库下载地址:http://www.h2database.com/html/download.html

下载完成之后,得到如下图所示的压缩包:

2.2、H2数据库安装

H2数据库的安装非常简单,直接将下载下来的压缩包解压缩即可,

如下图所示:

这样,H2数据库就算是安装完成了

2.3、测试H2数据库

首先介绍一下H2数据库的目录结构

h2  |---bin

|    |---h2-1.1.116.jar   //H2数据库的jar包(驱动也在里面)

|    |---h2.bat              //Windows控制台启动脚本

|    |---h2.sh                  //Linux控制台启动脚本

|    |---h2w.bat              //Windows控制台启动脚本(不带黑屏窗口)

|---docs                       //H2数据库的帮助文档(内有H2数据库的使用手册)

|---service //通过wrapper包装成服务。

|---src //H2数据库的源代码

|---build.bat //windows构建脚本

|---build.sh //linux构建脚本

运行h2.bat批处理程序启动H2数据库,如下图所示:

打开浏览器,输入地址:http://localhost:8082访问H2数据库的Web Console,

如下图所示:

能够看到这个界面,就说明了H2数据库可以正常使用了。

三、简单使用H2数据库

3.1、登录H2数据库的WebConsole控制台

连接测试通过之后,点击【连接】按钮,登录到test数据库的webConsole,如下图所示:

3.2、创建表

复制H2数据库提供的样例SQL脚本,如下图所示:

执行SQL脚本,如下图所示:

SQL脚本执行结果:

全部正常执行成功,此时就可以看到创建好的TEST表,如下图所示:

3.3、test数据库文件存放位置说明

在上面的操作中,我们使用jdbc:h2:~/test这个URL通过JDBC的方式连接上了test数据库,如下图所示:   然后在test数据库中创建了一张TEST表,并对TEST表执行了CRUD操作,那么这个test数据库的文件存放在哪个目录下呢,这里就需要说明一下"~"这个符号在window操作系统下代表什么意思了,在Window操作系统下,"~"这个符号代表的就是当前登录到操作系统的用户对应的用户目录,所以test数据库对应的文件存放在登录到操作系统的用户对应的用户目录当中,比如我当前是使用Administrator用户登录操作系统的,所以在"C:\Documents and Settings\Administrator\.h2"目录中就可以找到test数据库对应的数据库文件了,如下图所示: 3.4、创建新的数据库   点击【连接】按钮,就可以进入gacl数据库的控制台了,如下图所示:   此时就可以看到H2自动创建好的gacl数据库和gacl用户,然后在E:\H2目录下也可以找到gacl数据库对应的数据库文件,如下图所示:   同样的,我们也可以在新创建的gacl数据库中创建表,并对表进行CRUD操作,如下图所示:  .