免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kiss2003
打印 上一主题 下一主题

如何设计能透明支持多种数据库的系统 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-01-13 18:13 |只看该作者
差不多吧,你总不能不做任何工作就增加功能吧?呵呵

唯一能做的就是尽量抽象统一的接口,使的增加新功能支持的工作量尽可能少而且简单。
LFS应该就是朝着这样方向走的

论坛徽章:
0
12 [报告]
发表于 2011-01-15 15:24 |只看该作者
如果用存储过程实现业务呢?
这个应该怎么办?

论坛徽章:
0
13 [报告]
发表于 2011-01-16 15:53 |只看该作者
这个 问题应该 很多解决方案了吧 ,、

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
14 [报告]
发表于 2011-01-25 08:51 |只看该作者
开源的OTL也可以吧:http://otl.sourceforge.net/

论坛徽章:
0
15 [报告]
发表于 2011-01-25 09:51 |只看该作者
OTL挺不错的

论坛徽章:
0
16 [报告]
发表于 2011-01-27 21:13 |只看该作者
回复 4# duanjigang


    把数据抽象成 增、删、改、查,这个你有更进一步的想法么?我最近在想这个事情,考虑到头疼也没想出好的抽象方式

如果把数据抽象到程序中,比如一个用户类,涉及到数据库中的数据可能是多个表关联到一起的,应该如何处理。。。

额,头疼,或者谁有好的库,源码提供下参考,我们也学习下

论坛徽章:
0
17 [报告]
发表于 2011-01-29 11:18 |只看该作者
本帖最后由 duanjigang 于 2011-01-29 11:21 编辑
回复  duanjigang


    把数据抽象成 增、删、改、查,这个你有更进一步的想法么?我最近在想这个事情 ...
CMAX 发表于 2011-01-27 21:13



    其实要增加功能,比如对多种数据库的支持,不可能不做任何工作的。如果抽象的够好,能把工作量减少,保证稳定性和很好的模块化,目的就达到了。
增删查改,举个例子,自己定义6个函数接口

  1. module_init() //初始化数据库,连接之类
  2. data_add() //增加数据
  3. data_delete() //删除数据
  4. data_query() //查询数据
  5. data_mod()//修改数据
  6. module_clean()//卸载模块
复制代码
给开发人员就暴露这6个接口,需要对数据进行增删查该,调用这6个接口就行了。
然后,如果要增加mysql数据库的支持,让mysql开发人员开发出导出这六个函数的动态库;
要支持oracle数据库,就让oracle开发人员开发出导出这六个函数的动态库;
或者说开发出一个动态库,根据初始化的参数串为"mysql"或者"oracle"来确定调用哪个函数。
应用开发人员在oracle数据库和mysql数据库之间切换时,不需要重新编译代码,只需要修改配置文件即可.
比如配置文件格式如下:

  1. [db_mysql]
  2. name = mysql
  3. so = mysql_plugin.so
复制代码
运行时,只需要加载动态库即可。
如果想切换成oracle的库支持,修改成

  1. [db_oracle]
  2. name = oracle
  3. so = oracle_plugin.so
复制代码
即可。
参考linux的VFS的OOP思想。
或者你看看php的adodb_lite怎么做到支持七八种数据库的。
我想大概都脱离不了VFS那种做法吧

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
18 [报告]
发表于 2011-05-27 16:05 |只看该作者
最好是用jdbc之类兼容多种数据库的框架

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2011-07-03 21:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
20 [报告]
发表于 2011-07-07 11:04 |只看该作者
目前也在研究这个。标记一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP