论坛首页 Java版

超市前台收银脱机销售数据库该选择哪个?

浏览 6141 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-08-07
目前在做一个连锁超市管理系统,使用 PostgreSQL + Hibernate + Tomcat + Java Web Start + Hessian  + Swing 开发。
要求前台收银系统可以在服务器故障的情况下继续工作,所以需要选择一个轻量、稳定、支持Hibernate、易于通过 Java Web Start 发布、可免费用于商业产品的数据库用于脱机销售。
目前有几个数据库候选:
1)HSQLDB
2)Derby
3)Firebird
4)PostgreSQL
HSQLDB、Derby 发布方便,Firebird、PostgreSQL 应该也可以通过 Java Web Start 发布,不过难度较大,而且 PostgreSQL 体积大了些。
考虑到开发进度,觉得使用 HSQLDB 和 Derby 比较容易些,但不知道他们的稳定性如何?还有没有别的选择?
敬请大家指教!
   
最后更新时间:2006-08-07
曾使用HSQLDB作为系统中心数据库发生故障时的备选本地数据库,在中心数据库恢复后,将本地数据发送给中心数据库,并清空本地HSQLDB中的数据。

HSQLDB应该是可以满足你的需求的,但是如果数据量大,需要特别注意设置HSQLDB的一些配置参数,否则往往会发生Java内存溢出的错误。
   
0 请登录后投票
最后更新时间:2006-08-07
感觉HSQL比较适合,或者用BDB,BDB相当稳定。
   
0 请登录后投票
最后更新时间:2006-08-07
wainwen 写道
感觉HSQL比较适合,或者用BDB,BDB相当稳定。

BDB 是指 Berkeley DB 吧,据说很稳定。不过他的 License 不够开放,如果用于商业产品是要收费的。好像不能用 Hibernate 访问?
   
0 请登录后投票
最后更新时间:2006-08-08
Berkeley DB是嵌入式数据库 速度快
   
0 请登录后投票
最后更新时间:2006-08-08
Derby

Berkeley DB有专用的API,它不是关系数据库,hibernate用不上
   
0 请登录后投票
最后更新时间:2006-08-09
C的话:

Berkeley DB开发成本太高,我们用了5个月后全部换为firebird

对性能要求极高的系统用SQlite,多线程处理比较麻烦,锁定和同步需要自己处理(不过用Java可能JDBC已经处理)但是可以支持多进程,我们用了1年多了

如果不是多进程同时存取,firebird更加方便一些

hibernate就不知道了,没用过这些嵌入式数据库
   
0 请登录后投票
最后更新时间:2006-08-09
spring嘟嘟 写道
SQLite才是王道

但是 Hibernate 不支持 SQLite 呀!

HSQLDB 似乎没有结构化的数据文件,而是用数据库脚本来存储数据。
因为我将 HSQLDB SHUTDOWN 之后,只剩下两个文件:一个是 *.properties 配置文件,
另一个是 *.script 纯文本脚本文件,让人无法理解!

刚才查了一下 Hibernate 源代码的 dialect 目录,又找到两个 Java 开源数据库:
H2 和 Mckoi。按照 H2 主页上的测试结果, H2 比 HSQLDB 要快。不知道哪位用过,请介绍一下经验!
   
0 请登录后投票
最后更新时间:2006-08-10
liuwangxia 写道

HSQLDB 似乎没有结构化的数据文件,而是用数据库脚本来存储数据。
因为我将 HSQLDB SHUTDOWN 之后,只剩下两个文件:一个是 *.properties 配置文件,
另一个是 *.script 纯文本脚本文件,让人无法理解!


HSQLDB可以存放任何标准数据类型,而且Hibernate支持很好,唯一的缺点是管理不方便,不过使用DbVisualizer可以弥补这个问题。

至于数据存储,按照自己的需要,可以通过修改属性配置文件,比较灵活的,帮助文档也比较简洁明了。

derby曾考虑比较过,最终选择HSQLDB主要是基于两点:
1、容易上手,文档说明比较全面
2、hibernate支持很好,如果使用纯Java环境,考虑数据库透明等,还是影响选择很重要的一项因素。
   
0 请登录后投票
最后更新时间:2006-08-10
liuwangxia 写道
目前在做一个连锁超市管理系统,使用 PostgreSQL + Hibernate + Tomcat + Java Web Start + Hessian  + Swing 开发。
要求前台收银系统可以在服务器故障的情况下继续工作,所以需要选择一个轻量、稳定、支持Hibernate、易于通过 Java Web Start 发布、可免费用于商业产品的数据库用于脱机销售。


对于您提到的此类分布式系统非常感兴趣,但是对于此类分布系统架构选型,有些问题,我想到的此类系统选型:
1、有多个数据库,每个分点一个本地数据库,中心一个数据库,每个点单独一套独立的系统,连接本地数据库,然后一段时间后,定期将数据发送到中心数据库,并清除本地数据库,同时将中心设置的一些信息同步到本地数据库。此种方式,每个点相对独立,任何一个点发生问题,不会影响其他点正常工作,即使中心发生问题,也不会影响分点终端正常工作。网络可以选用拨号
2、只有一个中心数据库,分点通过VPN连接中心数据库。优势是系统设计可以简单很多,而且数据维护比较简单,每个点看到的数据都是实时的。
3、第三种就是您提到的,平常使用方式2,如果出现问题,选用方式1。


曾使用过方式1的架构实现一套连锁餐饮店系统的设置,但是在系统上线使用后,发现比较明显的缺点:
1、分点数据库维护
2、分点操作终端版本同步,还要考虑版本向下兼容
3、维护成本很高,如异地、跨多个省市情况下
4、中心数据同分点数据同步比较慢(目前使用xml-rpc方式,客户端使用Delphi编写,服务器端使用Java编写,但是xml-rpc方式接口增多后,管理比较麻烦)

对于这些问题,你在系统中是怎么解决的。网络选型是怎么考虑的,使用VPN网络?
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐