当前位置: 首页 > 编程日记 > 正文

H2:开源内存数据库引擎

H2是一个开源的内存数据库。Java编写、快速、小巧(1.5MB jar包)还提供了Web控制台管理数据库内容。

h2

主要功能

  • 非常快速的数据库引擎。
  • 开源。
  • Java编写。
  • 支持标准SQL、JDBC API。
  • 支持嵌入式模式、服务器模式和集群。
  • 强大的安全功能。
  • 支持PostgreSQL的ODBC驱动。
  • 多版本并发。

附加功能

  • 支持基于硬盘或内存数据库和表、只读数据库、临时表。
  • 支持事务(read committed),两步提交机制(2-phase-commit)。
  • 多个连接,表级锁。
  • 基于成本的优化、复杂查询采用遗传算法、零管理。
  • 支持可滚动和可更新的结果集、大结果集、外部结果排序、函数可以返回结果集。
  • 加密的数据库(AES)、SHA-256加密的密码、加密功能、SSL。

SQL支持

  • 支持多schema、information schema(Support for multiple schemas, information schema)。
  • 参照完整性/使用级联外键约束、check约束。
  • 内连接和外链接、子查询、只读视图和内嵌视图。
  • 触发器及Java函数/存储过程。
  • 很多内置功能,包括XML和无损压缩。
  • 广泛的数据类型,包括大对象(BLOB/CLOB)和数组。
  • 队列和自增长的列、计算列(可用于基于索引的功能)。
  • 支持ORDER BY、GROUP BY、HAVING、UNION、LIMIT、TOP。
  • 支持排序规则,包括ICU4J库。
  • 支持用户和角色。
  • 兼容模式支持IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle、和PostgreSQL等。

安全功能

  • 包括对SQL注入问题的解决方案。
  • 使用SHA-256和盐(SHA-256 and salt)认证用户密码。
  • 对于服务器模式的连接,用户密码从不会以纯文本格式通过网络传输。
  • 所有数据库文件(包括用于备份数据的脚本文件)可使用AES-128算法加密。
  • 远程JDBC驱动支持通过TLS的TCP/IP连接。
  • 内置的web服务器支持通过TLS连接。
  • 密码使用char数组发送到数据库,而不是String。

其它功能和工具

  • 体积小巧(小于1.5MB),低内存需求。
  • 多种索引类型(b-tree、tree、hash)。
  • 支持多维索引。
  • 支持CSV文件。
  • 支持链表,及一个内置的虚拟“range”表。
  • 支持EXPLAIN PLAN声明;复杂的跟踪选项。
  • 数据库关闭可以延迟或者禁用以提高性能。
  • 自带基于web的控制台应用(已译成多国语言)。
  • 数据库可以生成SQL脚本文件。
  • 包含一个恢复工具,可以转储数据库内容。
  • 支持变量(例如计算运行总和)。
  • 自动重新编译预处理语句。
  • 使用少量数据库文件。
  • 为每一条记录和日志条目使用校验和以保证数据完整性。
  • 经过充分测试(高覆盖率、随机压力测试)。

连接模式简介

支持以下三种模式:

  • 嵌入式模式(使用JDBC的本地连接)。
  • 服务器模式(使用JDBC或ODBC的通过TCP/IP的远程连接)。
  • 混合模式(本地和远程连接同时存在)。

嵌入式模式

嵌入式模式

在嵌入式模式下,应用程序使用和JDBC相同的JVM打开数据库。这是最快、最简单的连接方式。缺点是数据库任何时候只在一个虚拟机中打开。同时支持持久化和在内存中存储数据。没有同时打开数据库的数量限制,没有连接数限制。

服务器模式

服务器模式

当使用服务器模式时(也称作远程模式或者客户端/服务端模式),应用程序使用 JDBC或ODBC API以远程方式打开数据库。数据库服务器需要在相同或者另外的虚拟机,或者干脆另外一台计算机启动。 很多应用程序可以同时通过连接到这台服务器连接同一个数据库。在内部,该服务器进程以嵌入式模式打开多个数据库。 由于所有数据通过TCP/IP传输,服务器模式要比嵌入式模式慢一些。同时支持持久化和在内存中存储数据。每台服务器没有同时打开数据库的数量限制,没有 连接数限制。

混合模式

混合模式

混合模式是嵌入式模式和服务器模式的组合。第一个应用程序在嵌入式模式中连接到数据 库,但也启动了一个数据库服务器,这样其他应用程序(运行在不同进程或虚拟机中)可以同时访问数据。本地连接像嵌入式模式一样快速,远程连接稍慢。 数据库服务器可以通过API,或者自动化(自动混合模式)启停。当使用自动混合模式时,所有要连接数据库的客户端可使用完全相同的URL。

开发资源

  • 下载
  • 安装步骤
  • 速查表(CheetSheet)
  • 新手指南
  • 教程
  • 功能列表
  • 性能
  • 高级功能
  • 参考资源
    • SQL语法
    • 函数
    • 数据类型
    • Javadoc
    • PDF (1 MB)
    • 架构介绍

官方网站:http://www.h2database.com/
开源地址:https://github.com/h2database/h2database

from:http://hao.jobbole.com/h2-2/

转载于:https://www.cnblogs.com/GarfieldEr007/p/10198029.html

相关文章:

递归/回溯:Combination Sum II数组之和

问题如下: 已知一组数(其中有重复元素),求这组数可以组成的所有子集中,子 集中的各个元素和为整数target的子集,结果中无重复的子集。 例如: nums[] [10, 1, 2, 7, 6, 1, 5], target 8 结果为: [[1, 7], [1, 2, 5], …

如何在SharePoint2010中添加Deep Zoom Image

如何在SharePoint2010中添加Deep Zoom Image 应用范围 SharePoint 2010 Foundation;SharePoint 2010 Standard;SharePoint 2010 Enterprise所需材料 1. SeaDragon Ajax Viewer Web部件(点击此处下载)2. Deep Zoom Image Composer&…

linux 读取磁盘扇区,linux 下检查硬盘坏道/扇区

文章摘自:Linux检测硬盘坏道Linux检测硬盘坏道badblocks功能说明:检查磁盘装置中损坏的区块。语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]补充说明:执行指令时须指定所要检查的磁盘装置,及此装置…

Pjax是什么以及为什么推荐大家用

什么是pjax? 现在很多网站( facebook, twitter) 都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新。 这样的用户体验, 比起整个页面都闪一下来说, 好很多。 其中有一…

Scrapy框架CrawlSpider类爬虫实例

CrawlSpider类爬虫中: rules用于定义提取URl地址规则,元祖数据有顺序 #LinkExtractor 连接提取器,提取url地址 #callback 提取出来的url地址的response会交给callback处理 #follow 当前url地址的响应是否重新经过rules进行提取url地址 cf.py具…

递归/回溯:Generate Parentheses生成合法括号

已知n组括号,开发一个程序,生成这n组括号所有的合法的组合可能。 例如:n 3 结果为: ["((()))", “(()())”, “(())()”, “()(())”, “()()()”] 首先思考如何生成所有的括号组合的可能性,即例如2组括号,总共4个符号…

利用“哨兵”“实现双链表

利用“哨兵”“实现双链表 下面的代码用一个”哨兵“实现双链表,感觉很简洁,中间也有点绕,暂时实现,供学习之用 static Node list_handle {&list_handle,&list_handle, };bool addNode(Node* node) {if (node NULL){re…

suse linux显示乱码,open suse11.4中文乱码问题

winland0704 于 2011-04-07 00:56:10发表:不是乱码,而是字符编码标准不一样。windows的文本使用GBK,国标码。Linux使用Unicode编码。解决参看:hi.baidu.com/winland0704/blog/item/c58008512cc843c9b645aef1.html四、其他的一些问题3、文本编…

软件破解系列之OD中断方法

OD中断方法浅探 Ollydbg是一个新的32位的汇编层调试软件。适应于windows98、me、2000、xp和2003操作系统。由于他具有图形窗口界面,所以操作方便、直观,是cracker的好工具。 由于Ollydbg没有了TRW2000的万能断点,所以许多的新手感觉到用Ollyd…

MongoDB系列:二、MongoDB常用操作练习

最近在自学MongoDB,在此记录一下,当做学习笔记了(不断更新中)!! 一、背景 MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它是一个介于关…

递归/回溯:八皇后问题N-Queens

N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯贝瑟尔于提出了8皇后问题。 将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放方式具体是怎样的? 8…

KS103超声波测距模块

max232:电平转换芯片,将电脑的RS-232标准串口(高12V,低-12V)转换为(高5V,低0V)。 电脑串口(RS -232) > 单片机串口(TTL串口) SIPEX…

linux 硬盘操作,linux常用disk磁盘操作命令

#按照目录大小排序战士最前面15个目录或者文件du -xB M --max-depth2 /var | sort -rn | head -n 15#列出当前所有子目录的文件大小du -h --max-depth1#列出当前文件或者目录最大的10个du -s * | sort -n | tail#按照目录大小从大到小排序du -b --max-depth 1 | sort -nr | per…

在Spring中采用声明式方法对Hibernate和JDBC进行统一的事务配置(AOP)

<?xml version"1.0" encoding"UTF-8"?><beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www.springframework.…

Leetcode 213.大家劫舍II

打家劫舍II 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈&#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房…

替代Druid,HakariCP 为什么这么快?

这次源码探究,真的感觉看到了无数个小细节,无数个小优化,积少成多。平时开发过程中,一些小的细节也一定要“扣”。

递归/分治:归并排序

前言 分治算法: 将一个规模为N的问题分解为K个规模较小的子问题&#xff0c;这些子问题相互独立且与原问题性质相同。求出 子问题的解后进行合并&#xff0c;就可得到原问题的解。 步骤如下: 分解&#xff0c;将要解决的问题划分成若 干规模较小的同类问题;求解&#xff0c;…

Java中volatile 的使用场景有哪些?

volatile是一种轻量级的同步机制,它能保证共享变量的可见性,同时禁止重排序保证了操作的有序性,但是它无法保证原子性。所以使用volatilevolatile。

JDK22 正式发布了 !

Java 22 除了推出了新的增强功能和特性,也获得 Java Management Service (JMS) 的支持,这是一项新的 Oracle 云基础设施远程软件服务(Oracle Cloud Infrastructure, OCI) 原生服务,提供统一的控制台和仪表盘,帮助企业管理本地或云端的 Java 运行时和应用。使包含运行时计算值的字符串更容易表达,简化 Java 程序的开发工作,同时提高将用户提供的值编写成字符串,并将字符串传递给其他系统的程序的安全性。支持开发人员自由地表达构造器的行为。

Jackson 用起来!

你可以创建自定义序列化器和反序列化器以自定义特定字段或类的序列化和反序列化行为。为此,请创建一个实现或接口的类,并在需要自定义的字段或类上使用和注解。@Override// ...其他代码...优势性能优异:Jackson在序列化和反序列化过程中表现出优秀的性能,通常比其他Java JSON库更快。灵活性:通过注解、自定义序列化器/反序列化器等功能,Jackson提供了丰富的配置选项,允许你根据需求灵活地处理JSON数据。易于使用:Jackson的API设计简洁明了,易于学习和使用。

Swift中的问号?和感叹号!

Swift语言使用var定义变量&#xff0c;但和别的语言不同&#xff0c;Swift里不会自动给变量赋初始值&#xff0c;也就是说变量不会有默认值&#xff0c;所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错&#xff1a; var stringValue : String …

拜托!别再滥用 ! = null 判空了!!

另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空。如果你养成习惯,都是这样写代码(返回空collections而不返回null),你调用自己写的方法时,就能大胆地忽略判空)这种情况下,null是个”看上去“合理的值,例如,我查询数据库,某个查询条件下,就是没有对应值,此时null算是表达了“空”的概念。最终,项目中会存在大量判空代码,多么丑陋繁冗!,而不要返回null,这样调用侧就能大胆地处理这个返回,例如调用侧拿到返回后,可以直接。

ffmpeg java linux水印,Linux环境用FFmpeg给视频加水印详细步骤

FFmpeg给视频添加水印&#xff0c;根据官方文档的介绍可以知道FFmpeg在编译安装的时候还需要加 –enable-libfreetype、–enable-libfontconfig、 --enable-libfribidi 这几个参数&#xff0c;而这几个组件又需要从外面编译安装&#xff0c;我看很多博主直接用FFmpeg命令加水印…

red hat DHCP服务器配置

[ 基本操作 ] rpm –q dhcp / rpm -ql grep dhcp [ 查询DHCP ] yum –y install dhcp dhcp -devel service dhcpd start [ 启动 ] service dhcpd status [ 查看DHCP状态 ] chkconfig – level 3 5 dhcpd on [ 改变启动级别为3 5 自动启动服务 ] service ne…

axios解决调用后端接口跨域问题

vue-cli通过是本地代理的方式解决接口跨域问题的。但是在vue-cli的默认项目配置中这个代理是没有配置的&#xff0c;如果现在项目中使用&#xff0c;必须手动配置config/index.js文件 ... proxyTable: {/api: { //将www.exaple.com印射为/apistarget: https://www.example.c…

递归/归并:count of smaller numbers求逆序数

已知数组nums&#xff0c;求新数组count&#xff0c;count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数。 例如: nums [5, 2, 6, 1], count [2, 1, 1, 0]; nums [6, 6, 6, 1, 1, 1], count [3, 3, 3, 0, 0, 0]; nums [5, -7, 9, 1, 3, 5, -2, 1], count [5, 0, 5, 1…

远程计划任务管理

有时你需要远程管理或运行一批机器&#xff0c;但是按要求你没有权限或者不能安装客户端&#xff0c;下面的批处理可能帮上你的忙&#xff0c;将下方代码保存为批处理&#xff0c;并创建Clients.txt&#xff0c;存放的是以回车分隔的IP echo off setlocal enabledelayedexpansi…

linux shell for 循环变量,shell for循环总结

1 shell for循环语法for 变量 in 列表docommand1command2...commandNdone1.1 读取列表中的值#!/bin/bashfor test in apple boy cat dogdoecho The next state is $testdone结果&#xff1a;The next state is appleThe next state is boyThe next state is catThe next state …

自定义堆栈(回文检测)

using System; using System.Collections;namespace CStack {class Program{static void Main(string[] args){CStack alist new CStack();string ch;string word "上海自来水来自海上";bool isPalindrome true;for (int x 0; x < word.Length; x){alist.Push…

二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度

文章目录前言创建二叉树先序遍历中序遍历后序遍历获取叶子节点个数获取树的高度测试代码前言 现有如下二叉树: 关于二叉树的相关操作&#xff0c;我们能够发现二叉树从根节点到子节点&#xff0c;以及每个中间节点基本都能够拆分为若干个子节点的操作&#xff0c;且每个子节点…