- 浏览: 2610711 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
这不是一个新东西,但是它却是一个被严重低估的东西.
为了让它不再被继续低估,我打算为推广和宣传它贡献出自己的一点点力量.
=================================
先来个简介.
h2database 官方网站
http://www.h2database.com/
这个是一个 java编写的轻量级数据库.
类似的轻量级数据库实际上有很多, 例如java自带的derby,还有历史悠久的hsqldb,postgreSQL,sqlite...
和这些前辈比起来似乎他的来头小了一点.但是它绝对绝对绝对足够出色足够优秀.
我第一次接触他大概是在两年前, 使用它之后我就几乎再也没用过其他轻量级数据库了.(之前用过hsqldb mysql postgresql)
它完全开源, 小巧, 纯java编写,只有一个不到1M的jar(已经包含了jdbc驱动) , 不依赖任何第三方的组件.
支持多种数据库模式: c/s模式(相当于一个轻量级的mysql), 内存模式(相当于一个轻量级的内存数据库), 嵌入式模式.
支持多种连接方式. 支持hibernate.
拥有详尽出色的文档.这是我见过的最出色的开源软件文档之一.完全可以作为一本学习数据库的教材来使用.
由于全部由java编写,所以可以用java对它进行全面的控制,例如 启动/停止服务, 管理帐号等等.
当然,如果它不与java的程序配合使用,那么优势就减少很多,因为毕竟还需要jdk支持.
=================================
和其他轻量级数据库的特性对比:
它还有如下主要特性:
更多的详细说明见: http://www.h2database.com/html/features.html
下面是性能对比
(此处只是c/s模式下的对比, 这里 http://www.h2database.com/html/performance.html 还有更多的对比):
当然,它也有缺点,但是它的缺点往往只有在把它应用到它并不适合的场景(高并发 大数据量)时才会体现的比较明显.
=================================
H2DB出现也有很长时间了, 但是名气一直不大,我觉得并不是他的品质造成的,而是因为它的背后缺少大型的商业的组织支持.
近期我也正打算写一些H2DB的文章,来为h2db的普及做一些贡献,敬请期待.
JE上以前也有一些介绍性文章
大家可以自行搜索一下
在"介绍""概述"方面 显然其他作者比我更擅长
==================================
补充
==================================
针对robbin 的回复补充一个现实中的一个场景:
以前给某公司做BSS, 遇到了下面的情况.
系统的菜单 (树状结构)全部菜单项有2000多条, 菜单主要用在系统的上边导航 还有左边的菜单树
地市/分公司列表 这个不多 (毕竟联通占有率不高) 但是也有3位数了
这个应用场景极其的多, 很多操作又要用到, 相当于一个字典表
地市分公司部门列表 全部数据2000条左右,也相当于字典表
以上四种数据控制的"最小粒度"都是基于"人"的, 也就是说每个操作员操作系统时看到的都是不一样的.
这个系统同时在线人数5000多.
对于当时的运行环境来说, web服务器是有N多台 而且很好很强大, 但是数据库并没有那么多.(对数据库做群集?太疯狂了吧).
这种类似字典表的东西通常都是取出来放到缓存里,缓存可以借助ehcache之类的组件来实现.以此来减少对数据库的操作.
但是对于上面的情况, 显然是做不到的, 因为 判断一个数据项,是否对于当前的操作员可见,要进行复杂的判断,而且要对数据项做全遍历. 而如果不缓存,每次都从数据库去取 ,这么做同样是不可取的.
所以,最好的方法就是 用运行在web服务器上的"内存数据库"来实现一个支持 sql的 高级缓存.
===================================
再拿游戏举下例子,游戏的存档就是一个小型的数据库,如果有嵌入式数据库帮忙开发游戏的话,就不用为存档系统大动干戈了,
还有, NBA LIVE系列游戏里面包含了大量的球队和球员历史信息,这些信息就是被存在一个嵌入式数据库里的.如果没有嵌入式数据库,那么游戏中检索这些球员的数据将是多么繁琐的事情啊.
同时嵌入式数据库还可以用来加密. 把软件运行时需要的资源(数据 文件 图片等)放到嵌入式数据库里, 运行时"查询出".
免得自己再写一套机密机制.
===================================
以上说了这么多, 只是想说明一下, 嵌入式内存数据库其实用处真的蛮大的. 而且用法很灵活,
套用一句俗话"它是否有用并不取决于它自身 而是取决于我们的想象力"
这个高并发大数据量有没有一个大概的数据?到达多少就是到这个数据库的瓶颈了?
这是由OS文件系统限制的,目前绝大多数操作系统的版本没这个问题了。如果OS较老,MySQL的单表也有这个限制。
不行啊 能力有限啊 数据库这个领域还是很高深的
光那些算法就够我研究好几年的了
我只能从使用层面写些东西
为了让它不再被继续低估,我打算为推广和宣传它贡献出自己的一点点力量.
=================================
先来个简介.
h2database 官方网站
http://www.h2database.com/
这个是一个 java编写的轻量级数据库.
类似的轻量级数据库实际上有很多, 例如java自带的derby,还有历史悠久的hsqldb,postgreSQL,sqlite...
和这些前辈比起来似乎他的来头小了一点.但是它绝对绝对绝对足够出色足够优秀.
我第一次接触他大概是在两年前, 使用它之后我就几乎再也没用过其他轻量级数据库了.(之前用过hsqldb mysql postgresql)
它完全开源, 小巧, 纯java编写,只有一个不到1M的jar(已经包含了jdbc驱动) , 不依赖任何第三方的组件.
支持多种数据库模式: c/s模式(相当于一个轻量级的mysql), 内存模式(相当于一个轻量级的内存数据库), 嵌入式模式.
支持多种连接方式. 支持hibernate.
拥有详尽出色的文档.这是我见过的最出色的开源软件文档之一.完全可以作为一本学习数据库的教材来使用.
由于全部由java编写,所以可以用java对它进行全面的控制,例如 启动/停止服务, 管理帐号等等.
当然,如果它不与java的程序配合使用,那么优势就减少很多,因为毕竟还需要jdk支持.
=================================
和其他轻量级数据库的特性对比:
它还有如下主要特性:
更多的详细说明见: http://www.h2database.com/html/features.html
下面是性能对比
(此处只是c/s模式下的对比, 这里 http://www.h2database.com/html/performance.html 还有更多的对比):
当然,它也有缺点,但是它的缺点往往只有在把它应用到它并不适合的场景(高并发 大数据量)时才会体现的比较明显.
=================================
H2DB出现也有很长时间了, 但是名气一直不大,我觉得并不是他的品质造成的,而是因为它的背后缺少大型的商业的组织支持.
近期我也正打算写一些H2DB的文章,来为h2db的普及做一些贡献,敬请期待.
JE上以前也有一些介绍性文章
大家可以自行搜索一下
在"介绍""概述"方面 显然其他作者比我更擅长
==================================
补充
==================================
针对robbin 的回复补充一个现实中的一个场景:
以前给某公司做BSS, 遇到了下面的情况.
系统的菜单 (树状结构)全部菜单项有2000多条, 菜单主要用在系统的上边导航 还有左边的菜单树
地市/分公司列表 这个不多 (毕竟联通占有率不高) 但是也有3位数了
这个应用场景极其的多, 很多操作又要用到, 相当于一个字典表
地市分公司部门列表 全部数据2000条左右,也相当于字典表
以上四种数据控制的"最小粒度"都是基于"人"的, 也就是说每个操作员操作系统时看到的都是不一样的.
这个系统同时在线人数5000多.
对于当时的运行环境来说, web服务器是有N多台 而且很好很强大, 但是数据库并没有那么多.(对数据库做群集?太疯狂了吧).
这种类似字典表的东西通常都是取出来放到缓存里,缓存可以借助ehcache之类的组件来实现.以此来减少对数据库的操作.
但是对于上面的情况, 显然是做不到的, 因为 判断一个数据项,是否对于当前的操作员可见,要进行复杂的判断,而且要对数据项做全遍历. 而如果不缓存,每次都从数据库去取 ,这么做同样是不可取的.
所以,最好的方法就是 用运行在web服务器上的"内存数据库"来实现一个支持 sql的 高级缓存.
===================================
再拿游戏举下例子,游戏的存档就是一个小型的数据库,如果有嵌入式数据库帮忙开发游戏的话,就不用为存档系统大动干戈了,
还有, NBA LIVE系列游戏里面包含了大量的球队和球员历史信息,这些信息就是被存在一个嵌入式数据库里的.如果没有嵌入式数据库,那么游戏中检索这些球员的数据将是多么繁琐的事情啊.
同时嵌入式数据库还可以用来加密. 把软件运行时需要的资源(数据 文件 图片等)放到嵌入式数据库里, 运行时"查询出".
免得自己再写一套机密机制.
===================================
以上说了这么多, 只是想说明一下, 嵌入式内存数据库其实用处真的蛮大的. 而且用法很灵活,
套用一句俗话"它是否有用并不取决于它自身 而是取决于我们的想象力"
评论
40 楼
流浪鱼
2012-05-02
哈哈,可以看看
39 楼
Arden
2008-09-04
timesten好象直接可以从oracle网站使用,也不用花钱照样用,timesten肯定比h2要强了吧。
38 楼
zhuyx808
2008-08-06
哦,没看下面的评论,只看了文章,还是我先测试下在看了,有问题再请教了
37 楼
zhuyx808
2008-08-06
引用
当然,它也有缺点,但是它的缺点往往只有在把它应用到它并不适合的场景(高并发 大数据量)时才会体现的比较明显.
这个高并发大数据量有没有一个大概的数据?到达多少就是到这个数据库的瓶颈了?
36 楼
spiritfrog
2008-05-12
小实验了一下,确实不错
有个浏览器client
有个浏览器client
35 楼
yatwql
2008-05-12
期待更多的文章,一直打算抽个时间仔细看看H2的代码,就想看一下数据库是怎么实现的. 可老是这个借口那个借口没有开始做,惭愧得很.
34 楼
fins
2008-05-11
商用价值就一定要"高并发 大数据量"??
多高算高 多大算大?
而且它和传统的大型数据库是互为补充的关系 不是谁代替谁的关系
另外有朋友已经用在商业里了
我和他交流了一下 "高并发查询是极快的".
总之 在商业中使用时一定要合理利用 想用来代替完全代替oracle db2 mysql 是不可能的
至于怎么用, 那要看项目的需求以及使用者的想象力.
多高算高 多大算大?
而且它和传统的大型数据库是互为补充的关系 不是谁代替谁的关系
另外有朋友已经用在商业里了
我和他交流了一下 "高并发查询是极快的".
总之 在商业中使用时一定要合理利用 想用来代替完全代替oracle db2 mysql 是不可能的
至于怎么用, 那要看项目的需求以及使用者的想象力.
33 楼
sniperking
2008-05-10
高并发 大数据量的情况不能用,那还有商用价值吗?只能学习用了
32 楼
fins
2008-05-09
看来大家都比我了解h2啊 哈哈
我只是接触的比较早 但是用的还真不深
我得再专研专研
我只是接触的比较早 但是用的还真不深
我得再专研专研
31 楼
mhere
2008-05-09
愈发感觉这个东西 好啊~~~~
30 楼
heiheben
2008-05-09
我觉得 Azi 对H2还是很了解的
29 楼
lxy19791111
2008-05-09
使用过,感觉还不错
28 楼
Azi
2008-05-09
其实呢,2G不是H2的上限。就是写数据达到2G的时候,再执行查询的时候变得非常缓慢。用起来非常的慢而已。
27 楼
neora
2008-05-09
引用
H2Database只是不能支持大数据,曾经用来一个项目,超过2G就不行了
========================
这个取决你的操作系统
========================
这个取决你的操作系统
这是由OS文件系统限制的,目前绝大多数操作系统的版本没这个问题了。如果OS较老,MySQL的单表也有这个限制。
26 楼
csrcom
2008-05-09
H2Database只是不能支持大数据,曾经用来一个项目,超过2G就不行了
========================
这个取决你的操作系统
========================
这个取决你的操作系统
25 楼
QuakeWang
2008-05-08
针对于你提到的这个用法:
所以,最好的方法就是 用运行在web服务器上的"内存数据库"来实现一个支持 sql的 高级缓存.
我推荐一下JoSQL
http://www.iteye.com/topic/76967
引用
所以,最好的方法就是 用运行在web服务器上的"内存数据库"来实现一个支持 sql的 高级缓存.
我推荐一下JoSQL
http://www.iteye.com/topic/76967
24 楼
neora
2008-05-08
h2的全文检索功能是用apache Lucene实现的。
23 楼
neora
2008-05-08
已经用了1年了,很不错。
22 楼
yuankai
2008-05-08
To Azi
为什么我写create database test创建不了?是语法不对还是怎么回事?
还有就是在console写sql脚本为什么不能多行执行啊?在console写两句sql选择一行执行,总是两句都一起执行了。
为什么我写create database test创建不了?是语法不对还是怎么回事?
还有就是在console写sql脚本为什么不能多行执行啊?在console写两句sql选择一行执行,总是两句都一起执行了。
21 楼
fins
2008-05-08
不行啊 能力有限啊 数据库这个领域还是很高深的
光那些算法就够我研究好几年的了
我只能从使用层面写些东西
发表评论
-
一个商业公司如果要支持一个开源项目的话,它需要做哪些工作啊?
2009-12-07 16:55 4953一个商业公司如果要支持一个开源项目的话,它需要做哪些工作呢? ... -
如何让jxl (jexcelapi) 支持更多的数据
2009-01-08 23:52 4518jxl (jexcelapi) 一直是我比较喜欢的 java版 ... -
在java中"模拟" XMLHttpRequest
2008-11-03 12:17 13095这里所说的"模拟" 是指 : 在java中 ... -
利用google docs进行"轻量级过程管理".
2008-08-28 13:21 0利用google docs进行" ... -
[请教]jxl生成xls时,支持"合并"或"磁盘缓存"吗(导出大数据量时)
2008-07-28 09:37 6940jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-ex ... -
不错的国产开源免费的php框架: FleaPHP
2008-07-28 01:58 8519之前用他开发过一个小的网站 开发过程非常轻松愉快 体验也很好 ... -
GT-FrontController, 一个简陋的MVC控制器的设计思路
2008-07-06 23:53 2730在给GT-Grid做前后台结合的例子时, 为了"快速 ... -
JSF 与 "我的伟大发明" ---- 关于B/S UI开发的胡言乱语
2008-04-10 14:25 14469这篇帖子后面的回复和 ... -
初看JSF后的胡言乱语
2008-04-10 09:31 4583最近看了一点jsf ---- 只 ... -
Help,如何在J2EE环境下使用Sqlite以及如何将sqlite打入war包
2008-03-27 09:46 3787需求是这样的 希望j2ee应用(基于应用 而不是整个服务器) ... -
请记住: i AM SoLiD. (关于View的事件触发顺序)
2007-11-16 04:11 2630View 提供了若干事件. 在渲染 布局 展现 相关事件的触 ... -
Android SDK下, 如何在程序中输出日志 以及如何查看日志.
2007-11-15 22:38 9846Android SDK下, 如何在程序中输出日志 以及如何查看 ... -
小胖加入Android Fans的 大军了 呵呵
2007-11-15 13:30 3142决定开始研究 Android 了. 以前研究过 j2me 对 ... -
老帖: findbugs简介
2007-11-02 10:09 3568这个时候说 findbugs ??? ... -
世上没有B/S系统,只有B系统和S系统.
2007-09-12 13:45 34353先说些与标题貌似无关的话. 随着prototype DWR ... -
[求助]有没有哪个缓存组件支持 基于访问频率的清理策略
2007-08-29 18:30 2406目前缓存清理策略几乎都是基于 存活期 和 活跃期 还有缓存队列 ... -
[发布2007-08-06]Ajax向导组件 WebWizard Component Beta1
2007-08-06 15:55 4998/****************************** ... -
寻求一个eclipse下更好的snippet插件(或代码模板管理插件 或代码生成器)
2007-07-26 11:12 4262eclipse自带一个snippet插件,但是功能有限. 只支 ... -
让Struts 1焕发青春----小议对Struts的改造.
2007-06-25 15:27 7599目前流行的新型的MVC框架 几乎都在"增强单元测试能 ... -
JProfiler与tomcat整合的视频演示
2007-06-20 12:16 8698这类东西看官方文档 或者google都能有答案 但是我最近为 ...
相关推荐
4、H2Database_SQL语法.doc 5、H2Database高级特性.doc 6、H2Database聚合函数.doc 7、H2Database连接配置.doc 8、H2Database数据类型.doc 9、H2Database中文教程.doc 10、H2内存数据库h2部署操作手册.docx 11、H2...
3 jdbc数据库URL:jdbc:h2: test test为h2 database默认提供的测试数据库 4 所有新数据库都会被自动创建 二 h2 database 的控制台">一 简介 h2 database 是一个开源免费的Java SQL数据库 数据库分为嵌入式 ...
H2Database是一款轻量级、高性能的开源关系型数据库,广泛应用于嵌入式系统和测试环境。它提供了丰富的SQL支持,包括聚合函数,使得在处理大量数据时能够进行高效的统计和分析。本文档将深入探讨H2Database的聚合...
h2database是一款轻量级、高性能的Java内存数据库,特别适合用于处理实时性强、对响应速度要求高的业务逻辑。 2.1 h2database的启动 h2database有两种启动模式:嵌入式和控制台模式。嵌入式模式中,数据库与应用...
2. **连接数据库**:通过JDBC驱动连接H2Database,使用`jdbc:h2:mem:`或`jdbc:h2:`前缀指定内存或文件模式数据库。 3. **创建表和插入数据**:使用SQL语句创建表结构,如`CREATE TABLE ...`,并使用`INSERT INTO .....
《H2Database中文教程》是针对数据库管理系统H2Database的一款详尽指南,旨在帮助学习者理解和掌握这款轻量级、高性能的Java嵌入式数据库。H2Database以其易用性、灵活性和广泛的特性集,成为了开发者进行测试和小型...
jdbc:h2:file:/path/to/mydb;DB_CLOSE_DELAY=-1 ``` `DB_CLOSE_DELAY=-1`表示即使所有连接关闭,数据库也不会立即关闭,而是等待新连接。 ### Spring Hibernate配置 在Spring和Hibernate框架中配置H2数据库,需要在...
H2Database是一款开源、轻量级、内存模式的数据库管理系统,它支持多种SQL标准,包括SQL:2003、SQL:2008和部分SQL:2011。这款数据库广泛应用于测试、开发以及嵌入式系统,因为它的易用性、高性能和灵活性。在"**H2...
【H2DataBase+iBatis简易demo】是一个演示项目,展示了如何将轻量级的H2数据库与流行的Java持久层框架iBatis进行集成。在这个项目中,开发人员使用了MyEclipse作为IDE,并且H2数据库被配置为两种运行模式:内存模式...
H2数据库是一个由Java编写的高性能、轻量级的关系型数据库管理系统(RDBMS),它在许多场景下作为开发和测试的理想选择。由于其开源性质,H2数据库得到了全球开发者社区的支持,允许自由使用、修改和分发。下面将...
此外,H2还提供了一系列命令行工具,方便用户进行各种数据库操作,如数据导入导出、SQL执行等。这些工具可以与OpenOffice进行集成,为用户提供更加丰富的数据处理功能。 在Web应用开发中,H2还支持JNLP(Java ...
H2Database是一款轻量级、开源的嵌入式和服务器模式的Java数据库,适用于测试、开发和嵌入式系统中的数据存储。它以其高性能、易用性和灵活性而受到开发者的欢迎。本文将深入探讨H2Database的高级特性,帮助你更好地...
H2数据库是一个开源、轻量级、嵌入式的Java数据库,适用于各种应用场景,从本地单用户模式到大型多用户服务器模式。它支持多种数据库引擎,包括内存、文件、和分布式模式,可以方便地在开发环境中使用,同时也适合...
H2 Database Engine是一款轻量级、高效的开源数据库系统,专为快速开发和临时用途而设计。它的主要特点是其小巧的体积和出色的性能,这使得它成为开发者在进行项目原型设计或者测试环境搭建时的理想选择。H2 ...
H2数据库,非常好的内存数据库。 H2的优势: 1、h2采用纯Java编写,因此不受...H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。
内存数据库H2 Database是Java开发的一个轻量级、高性能、开源的关系型数据库系统。它可以在内存中运行,也可以存储在磁盘上,并且支持多种模式,包括单用户模式、服务器模式以及分布式集群模式。H2 Database的设计...
H2 database 是一个非常著名的数据库,其性能相当优秀,支持嵌入,client-server模式,支持内存表,cached,text表, 本压缩包 包含 H2 database 源代码和文档 本版本 为最新版本 2010-12-12
配置方面,H2提供了丰富的命令行选项,可以通过`jdbc:h2:` URL来创建或连接数据库。例如,创建一个名为"test"的内存数据库: ```sql jdbc:h2:mem:test ``` **数据类型** H2数据库支持标准的SQL数据类型,如INT、...
H2数据库是一款轻量级、高性能的开源内存数据库系统,主要设计用于嵌入式环境,也可作为独立服务器使用。它的名字“H2”意指“第二个版本的氢”,象征其简洁且快速的特性。H2数据库支持SQL标准,并提供多种数据库...
H2数据库是一款轻量级、高性能的开源关系型数据库,尤其适合于开发人员在本地进行快速测试和原型设计。它的名字“H2”源于“Half a dozen, version 2”,暗示了其小巧且不断进化的特性。这款数据库系统支持多种模式...