楼主: jieforest

【话题讨论】如何实现NoSQL数据库驱动程序

[复制链接]
论坛徽章:
11
开发板块每日发贴之星
日期:2007-09-24 01:04:44开发板块每日发贴之星
日期:2010-07-29 01:01:01ERP板块每日发贴之星
日期:2010-07-29 01:01:01设计板块每日发贴之星
日期:2010-06-12 01:01:06ERP板块每日发贴之星
日期:2010-05-18 01:01:01数据库板块每日发贴之星
日期:2010-05-18 01:01:01设计板块每日发贴之星
日期:2008-10-16 01:03:26行业板块每日发贴之星
日期:2007-10-29 01:05:31ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44开发板块每日发贴之星
日期:2007-10-18 01:05:07
11#
发表于 2013-8-26 22:54 | 只看该作者
大多数人都没有关注过这方面,期待高手参加。

使用道具 举报

回复
论坛徽章:
63
2010广州亚运会纪念徽章:台球
日期:2010-10-18 12:43:48茶鸡蛋
日期:2013-01-09 10:59:002013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:帆船
日期:2013-04-02 17:07:052013年新春福章
日期:2013-04-08 17:42:48奥运纪念徽章
日期:2013-07-18 13:55:12优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11
12#
发表于 2013-8-27 16:43 | 只看该作者
1、如何实现NoSQL数据库驱动程序?可以以MongoDB或Redis为例,不限于这两种NoSQL。
1和2的问题很接近,实现NoSQL数据库驱动程序的步骤可以参考我的第二个问题的答案。

2、在设计NoSQL数据库驱动程序时,主要应考虑哪些因素?
1)考虑支持该NoSQL数据库提供的各种数据类型;
2)考虑支持NoSQL数据库的数据文件格式;
3)考虑实现NoSQL数据库的编码、解码和复杂数据对象的算法;
4)考虑支持NoSQL数据库的I/O缓冲;
5)考虑支持NoSQL数据库主键索引;
6)考虑实现NoSQL数据库的序列化(即串行化)技术;
7)考虑实现NoSQL数据库的一些特性,比如MongoDB的GridFS文件系统;
8)考虑NoSQL数据库远程连接的实现,其中可能会自定义访问协议。

3、一个完整的NoSQL数据库驱动程序,应该包含哪些功能点?
一个完整的NoSQL数据库驱动程序,应该包含的功能点大致有:
1)提供对主流编程语言支持,这是你的NoSQL数据库是否能吸引程序员的关键。
比如MongoDB的驱动程序,就提供了C、C++、C#、Erlang、Java、JavaScript、Node.js、Perl、PHP、Python、Ruby、Scala等语言的驱动库。
2)定义一套访问API,API应该做到易学习、易使用、难误用,保证API的干净和简洁。
3)NoSQL数据库驱动程序可能需提供MapReduce的实现。
Hadoop是目前大数据事实上的标准技术,各种NoSQL数据库都应该提供其MapReduce实现。
4)错误集
NoSQL数据库驱动程序应该定义一套错误集合,客户端可以根据返回的错误号定位是什么错误,有助于解决实际问题。
5)高速I/O模块
NoSQL数据库驱动程序应提供对NoSQL数据库的高速读写以及缓冲。
大致就这么多,以后可以继续补充。

使用道具 举报

回复
论坛徽章:
2
2010新春纪念徽章
日期:2010-03-01 11:20:042012新春纪念徽章
日期:2012-01-04 11:50:44
13#
发表于 2013-8-29 09:38 | 只看该作者
这个话题里没太说明白,"NoSQL数据库驱动"仍然是执行SQL?还是另外创造一套语法?
如果是仍然执行SQL,那么这个驱动的主要工作就是SQL语句解析,并转换为NOSQL的API。
主要考虑的问题就是SQL 92的兼容性了。
功能点是JDBC现成的接口即可。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
14#
 楼主| 发表于 2013-8-29 12:34 | 只看该作者
hero3 发表于 2013-8-29 09:38
这个话题里没太说明白,"NoSQL数据库驱动"仍然是执行SQL?还是另外创造一套语法?
如果是仍然执行SQL,那么 ...

你把我绕糊涂了, 首先, NoSQL的原意是No SQL, 后来逐渐演进成Not Only SQL, 既然都没有SQL, 又怎么会执行SQL呢?

使用道具 举报

回复
论坛徽章:
2
2010新春纪念徽章
日期:2010-03-01 11:20:042012新春纪念徽章
日期:2012-01-04 11:50:44
15#
发表于 2013-8-29 17:27 | 只看该作者
jieforest 发表于 2013-8-29 12:34
你把我绕糊涂了, 首先, NoSQL的原意是No SQL, 后来逐渐演进成Not Only SQL, 既然都没有SQL, 又怎么会执行 ...

也不见得啊,比如hive、phoenix、impala等这些工具就是将SQL转换为对hdfs、hbase的数据访问,从而降低hadoop的应用门槛,而且提供了JDBC驱动。
如果是纯粹的NOSQL数据库驱动,首先得有个nosql系统访问的标准吧,如果不谈论标准那么现在这些nosql系统各自提供的API如MongoDB client API就是数据库驱动了,只是各家的驱动不通用而已。

使用道具 举报

回复
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
16#
发表于 2013-8-30 13:59 | 只看该作者
话题好难啊

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
17#
发表于 2013-8-30 20:19 | 只看该作者
crakme 发表于 2013-8-26 22:31
看过postgresql和mongodb的源码,回头去翻翻pgsql的源码看看如何实现的。

pgsql是开源数据库吗?你看过源代码,有什么好的分享一下。

使用道具 举报

回复
论坛徽章:
11
奥运纪念徽章
日期:2012-11-28 09:37:30马上加薪
日期:2014-03-20 16:14:11马上有对象
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11马上有房
日期:2014-03-20 16:14:11马上有车
日期:2014-03-20 16:13:24ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:39ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422013年新春福章
日期:2013-02-25 14:51:24ITPUB官方微博粉丝徽章
日期:2012-12-11 17:06:47
18#
发表于 2013-8-30 23:45 | 只看该作者
xgghxkhuang 发表于 2013-8-30 20:19
pgsql是开源数据库吗?你看过源代码,有什么好的分享一下。

pgsql是开源数据库  纯C写的,代码很规范。
Mongodb是c++写的,v8引擎用的不错。
具体还有很多值得学习的地方

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
19#
发表于 2013-8-31 08:31 | 只看该作者
没接触过,等待高手

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
20#
 楼主| 发表于 2013-8-31 09:41 | 只看该作者
hero3 发表于 2013-8-29 17:27
也不见得啊,比如hive、phoenix、impala等这些工具就是将SQL转换为对hdfs、hbase的数据访问,从而降低had ...

我明白看法的分歧在哪里了。

这里我们先把SQL的定义明确一下。在关系数据库里面,SQL指结构化查询语言(Structured Query Language),是一种脚本语言。SQL语言基本上独立于数据库本身,ISO提出了SQL92标准,希望各种数据库产品都使用相同的SQL标准作为共同的数据存取语言和标准的接口,使不同数据库系统之间的互操作有了共同的基础,进而实现异构机、各种操作环境的共享与移植。悲哀的是,到现在这个理想也没实现。

而对于NoSQL数据库,它是没有SQL语言的,也不遵循任何SQL标准。以MongoDb为例,它采用了类似于SQL的脚本语言操作数据库,这完全是10gen公司自定义的。其它的NoSQL也大多如此。这是因为SQL语言本身很成熟,所以这些NoSQL厂商或多或少地会借用一些SQL的语法,但事实上是跟"SQL92"标准无关的。同样,跟JDBC也无关,毕竟JDBC是关系数据库的产物。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表