查看: 1195|回复: 10
|
请问以shareware发行的小软件应该用什么资料库?
[复制链接]
|
|
不知道之前是不是由讨论过这个问题。
一般上像 Winzip, Winrar, FlashGet这一类型的shareware,体积都很小,而且要容易安装,基本上就不大可能叫使用者再安装整个 SQL server。那么它们到底要用什么资料库程式来管理自己的数据呢?
我看到的是使用 Access 的 mdb,加上密码以免对手可以知道他的 table 格式。除此之外,有些软件以文本方式储存。Access (MDAC) 应该不能够用在 Linux 上面吧?那么难道在 Linux 上运行的应用就不可能使用资料库?
我觉得可以用在 shareware 上的数据库必须:
1) 整个程式库,或者不必程式库(比如说已经包含在 Windows 里面)
2) 不必分开安装 sql server
3) 功能不必超强,但是至少齐全
4)不能够让使用者很容易就看到数据内容
同一个问题,延伸开去,就是桌面应用在不能够安装 SQL server 下,除了文本方式之外,还有什么方式可以管理数据。
我在数据库方面是大外行,说得错误请各位不要见怪。 |
|
|
|
|
|
|
|
发表于 29-5-2006 07:25 PM
|
显示全部楼层
可以考虑用 FireBird 或 SQLLite.  |
|
|
|
|
|
|
|

楼主 |
发表于 29-5-2006 08:19 PM
|
显示全部楼层
原帖由 goatstudio 于 29-5-2006 07:25 PM 发表
可以考虑用 FireBird 或 SQLLite.
这两个数据库我都没有用过,它会开 port,以 http connection 连接,或者是可以直接在程序里面呼叫呢?
如果是前者,那么和安装普通 SQL server 没有差别,因为会有增加 port connection 的问题。还要考虑 port conflict,firewall 的问题。Access 的话,应该是在程序里面,直接以 ADO 开启 mdb 档案。 |
|
|
|
|
|
|
|
发表于 29-5-2006 09:06 PM
|
显示全部楼层
原帖由 haryewkun 于 29-5-2006 08:19 PM 发表
这两个数据库我都没有用过,它会开 port,以 http connection 连接,或者是可以直接在程序里面呼叫呢?
如果是前者,那么和安装普通 SQL server 没有差别,因为会有增加 port connection 的问题。还要考虑 ...
统统都不用... 只是一个 file based 的资料库.
FireBird 更有专属的 .Net Connector, 是我最喜欢的小型资料库. |
|
|
|
|
|
|
|

楼主 |
发表于 29-5-2006 09:07 PM
|
显示全部楼层
上网寻找到的一些资料:
姓名:morgan 反馈时间:2004-01-23 15:12 218.77.80.* [9楼]
问得好。
我先解释一下之所以称之为嵌入版本的原因。
我们知道Firebird是一个c/s类型的数据库产品,使用它必须有一个服务端部份,经常在单机使用时,也必须在单机上启动一个服务应用,这在开发单机版本应用时多有不便,因为所有对数据库的操作均是通过FBClient.dll这个DLL来完成的,一群爱好者想到了将服务器的所有功能也封装到这个DLL中,这样对于单机版本就无需再另外启动一个服务程序了,而且很快就实现了。所以我们称之为嵌入版本,是指将数据库服务器实现程序嵌入到客户端的DLL中,从而无需再必须有服务器端的服务即可使用Firebird数据库。
有了上面的解释,我想上面的问题就基本上就都回答了。
希望我上面的解释能让你对嵌八版本有较清楚的了解。
这一类型的数据库,好像是叫做“桌面数据库”。也有人叫做“嵌入数据库”。知道这两个名词要 google 比较容易。
SQLite 的资料:
不需要配置,不需要安装,也不需要管理员
支持大部分SQL92
一个完整的数据库保存在磁盘上面一个文件
同一个数据库文件可以在不同机器上面使用
最大支持数据库到2T
字符和BLOB的支持仅限制于可用内存
整个系统少于3万行代码,少于250KB的内存占用(gcc)
大部分应用比目前常见的 客户端/服务端 的数据库快
没有其它依赖
源代码开放, 代码95%有较好的注释
简单易用的API. 官方带有TCL的编译版本。其它的单独提供
php 从 5.x 开始默认内置编译了SQLite, 4.x 需要通过pear 来安装 pear install sqlite SQLite 常用于嵌入到程序, 为一些需要数据库,但是不必要安装中/大型的数据库,而且进行的是比较普通的操作(例如select/insert/delete之类的)
只是对于桌面的应用如何还不清楚,也不知道那一个的占有率最高。
我继续寻找中……
[ 本帖最后由 haryewkun 于 29-5-2006 09:08 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 30-5-2006 10:44 AM
|
显示全部楼层
对于 firebird 出现的问题:
我们的测试集合发现,firebird的outer join有问题,无法正确查询,因此我们已经放弃用firebird作为测试数据库的计划了。
另一人回答:
outer join是一个老问题了,估计在2.0中会解决。但是不知道为什么到下来2.0还没有推出。
不知道 goatstudio 大大有没有遇到这样的问题,或者这个问题已经在最新的版本中被解决了(目前firebird的版本是v.1.5.3,上面的帖子是于2005-6-11 发出)
另外一篇找到的问题,标题是《傲慢的西方人,慎重采用 Firebird DB》,内容主要是说对中文的支援上有很大问题(Firebird 数据库文件不能放置在含有中文等字符的路径中),但是我不知道现在是否已经解决,以及严重性如何。
http://blog.joycode.com/percyboy/archive/2005/04/21/49403.aspx
这一篇《Embedded Firebird DB 简介》谈到多项桌面数据库的问题。
http://blog.joycode.com/percyboy/archive/2005/04/18/49228.aspx
Firebird 数据库文件不能放置在含有中文等字符的路径中。
DBISAM也不错,只不过只支持Delphi/BCB开发环境
单文件型小型数据库, 我也是用MDB的。 最关心是它的加密强度,像ACCESS那些密码随便就让人破解了,简直是裸奔!
Embedded Firebird打开数据库时,是采用独占文件打开的,不能同时有第二个进程打开,这样,如果我发布程序时,就必须限制我的程序只能有一个实例在运行!
Access加密强度不够(用上面朋友的话说,完全是在裸奔),放弃;SQLite不支持数据库加密,也只好放弃。
谁说“最后找到的是Firebird Embedded Database,试用了一下很不错,单文件发布,不需安装,有密码保护,真是很理想”的? 你只要能拿到他的文件,再安装个fireBird,就可以随意查看了,真是没劲。 我看,比ms access还裸。
Berkeley DB 是不错。不过它的 Licence 不适合作开发。
Berkeley DB 有两套授权机制,一种是开源协议,适合做开源软件或内部使用软件;一种是商业协议,适合做商业软件。简言之,除非你做的是开源软件,否则,Berkeley DB 不是免费的。
里面也有人说他测试过,他觉得似乎可以使用中文路径(2005-10-12 11:37的帖子),实际上现在究竟如何,我就不知道了。
暂时资料只找到这边,有更新的资料我再贴上…… |
|
|
|
|
|
|
|
发表于 30-5-2006 11:56 PM
|
显示全部楼层
我没遇过以上的问题, 不过这也许和我只用 FireBird 作为简单的资料库有关. 
建议, 如果资料不多, 可以用 xml 然后自行 encrypt/decrypt, 然后搜寻的时候用 xpath 的方法. 但资料多...例如 1, 2 mb 的话效能就会大大打折扣.
你提到的软件... winzip, winrar, 或我正在用的 BT 软件... 一般地说资料都非常的少. |
|
|
|
|
|
|
|
发表于 2-6-2006 12:55 PM
|
显示全部楼层
我觉得可以用在 shareware 上的数据库必须:
1) 整个程式库,或者不必程式库(比如说已经包含在 Windows 里面)
2) 不必分开安装 sql server
3) 功能不必超强,但是至少齐全
4)不能够让使用者很容易就看到数据内容
2和3,Firebird可以滿足。
1呢,Embedded Firebird只需几个文件就行,不必安裝,直接拷貝即可使用,也不必設定registry。
至於4,你可以自己加密field的資料,程式取出后才解密。
一般上像 Winzip, Winrar, FlashGet这一类型的shareware,体积都很小,而且要容易安装,基本上就不大可能叫使用者再安装整个 SQL server。那么它们到底要用什么资料库程式来管理自己的数据呢?
每个軟件都有自己的方式儲存資料,不一定需要正统的資料库系統。我指的正统資料库系統是有table, field, index, sql, stored procedure等功能的系統。
当你開發軟件时,就必須衡量你的資料儲存方式,到底这个程式需要正统資料库系統吗?还是自己定義一个文件形式釆儲存呢?
[ 本帖最后由 fxam 于 2-6-2006 01:01 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 2-6-2006 09:52 PM
|
显示全部楼层
每个軟件都有自己的方式儲存資料,不一定需要正统的資料库系統。我指的正统資料库系統是有table, field, index, sql, stored procedure等功能的系統。
当你開發軟件时,就必須衡量你的資料儲存方式,到底这个程式需要正统資料库系統吗?还是自己定義一个文件形式釆儲存呢?
支持 ! 我就開發過使用 text file, ini file, csv 以及 xml file 來做存檔的小軟件
我觉得可以用在 shareware 上的数据库必须:
1) 整个程式库,或者不必程式库(比如说已经包含在 Windows 里面)
2) 不必分开安装 sql server
3) 功能不必超强,但是至少齐全
4)不能够让使用者很容易就看到数据内容
1, 2. mdb 就已經包含在 windows 裡面, 而 sqlite 有 dll file 就可以直接使用, 不用安裝
3. 那麼好像只有 sqlite 或 firebird 或 mdb file
4. 這個是見仁見智的問題, 而且不讓別人 export data 屬於 data hijack, 不鼓勵
其實, 只要你開得到, 別人也就開得到 / 拿得出來
不妨討論樓主想開發那一類的軟件 ?
[ 本帖最后由 flashang 于 2-6-2006 09:54 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 3-6-2006 11:57 AM
|
显示全部楼层
sqlite3 已经支持了
[ 本帖最后由 terrorgen 于 3-6-2006 12:04 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 4-6-2006 12:31 AM
|
显示全部楼层
原帖由 flashang 于 2-6-2006 09:52 PM 发表
1, 2. mdb 就已經包含在 windows 裡面, 而 sqlite 有 dll file 就可以直接使用, 不用安裝
3. 那麼好像只有 sqlite 或 firebird 或 mdb file
4. 這個是見仁見智的問題, 而且不讓別人 export data 屬於 data hijack, 不鼓勵
其實, 只要你開得到, 別人也就開得到 / 拿得出來
不是以 data hijack 為目的,可是有時候也有不希望讓用戶看到資料庫内容的時候。可能隱藏了一些秘密劇情,可能程式裏面還有一些沒有開發完成的功能,也可能只是單純不想讓用戶知道數據内容,這在遊戲製作中是最常見的了。要是用戶可以看到數據庫,還有驚喜嗎?
原帖由 flashang 于 2-6-2006 09:52 PM 发表
不妨討論樓主想開發那一類的軟件 ?
想開發一些自己使用的工具程式,幫助管理 code snippet。對現在市面的產品不是很滿意。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|