免费注册 查看新帖 |

Chinaunix

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

SPHiveDB: 基于 sqlite 的数据库服务器 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-06 21:43 |只看该作者

发布 0.7.5 版本

在 0.5 版本之后,增加了 python,php 的客户端 API 。
对于 C++ 的也用 protobuf 替换了 json ,性能上有提升。

目前已经实现 C++, java, python, php 四种语言的客户端 API。

http://sphivedb.googlecode.com/files/sphivedb-0.7.5.src.tar.gz

论坛徽章:
0
12 [报告]
发表于 2009-12-06 22:54 |只看该作者
其实,我觉得使用mysql的storage engine api实现更好,我现在就在做这个相关的工作,互相学习下,呵呵。

论坛徽章:
0
13 [报告]
发表于 2009-12-06 23:13 |只看该作者
原帖由 cugb_cat 于 2009-12-6 22:54 发表
其实,我觉得使用mysql的storage engine api实现更好,我现在就在做这个相关的工作,互相学习下,呵呵。


你的意思是说用 mysql 的 storage engine 来作为最终底层的存储模块?

论坛徽章:
0
14 [报告]
发表于 2009-12-07 10:56 |只看该作者
原帖由 iunknown 于 2009-12-6 23:13 发表


你的意思是说用 mysql 的 storage engine 来作为最终底层的存储模块?

又看了下你的原文,还是没弄明白,你做的是什么啊?
是使用sqlite做sql解析前端,然后分表、存储这些,你来做吗?

论坛徽章:
0
15 [报告]
发表于 2009-12-07 11:49 |只看该作者
原帖由 cugb_cat 于 2009-12-7 10:56 发表

又看了下你的原文,还是没弄明白,你做的是什么啊?
是使用sqlite做sql解析前端,然后分表、存储这些,你来做吗?


http://groups.google.com/group/p ... 81/f17fe6bb98ab0dca

可以从两个角度来描述 SPHiveDB。

从 SQL 数据库的角度来说,SPHiveDB 是一个基于 sqlite 的数据库服务器。
sqlite 本身不是一个服务器,SPHiveDB 使用 JSON-RPC 作为通讯协议,为 sqlite 实现了一个服务器。

从 Key/Value 数据库的角度来说,SPHiveDB 是针对 value 做了加强。
通常的 Key/Value 数据库,从数据库的角度来说,通常是把 value 当成了一个无格式的二进制流。
但是,通常在使用的时候,我们是需要 value 带有格式的,value 可能是一个有多个字段的 struct ,
或者可能是一个多行的表。当 Key/Value 数据库不直接支持 value 有格式的时候,我们只能自己动手。

SPHiveDB 对 value 做格式化的方法,就是把每一个 value 都作为一个 sqlite 数据库。
这样 value 就可以支持完整的 SQL 语句,支持我们熟悉的 SQL 操作。
实际的 Key/Value 存储使用了 TokyoCabinet 的 HashDataBase 。

目前 server 支持一个 execute/remove 接口。
execute 用于执行 sql 语句,remove 用于删除一个 key 。

已经实现了 C++/Java/Python/php 的 client API 。

论坛徽章:
0
16 [报告]
发表于 2009-12-07 14:05 |只看该作者
原帖由 iunknown 于 2009-12-7 11:49 发表


http://groups.google.com/group/p ... 81/f17fe6bb98ab0dca


用在什么地方呢?想想不出使用场景。
sqlite用做数据库服务器,貌似很差的啊,本来是桌面数据库的?

论坛徽章:
0
17 [报告]
发表于 2009-12-07 17:22 |只看该作者
原帖由 cugb_cat 于 2009-12-7 14:05 发表

用在什么地方呢?想想不出使用场景。
sqlite用做数据库服务器,貌似很差的啊,本来是桌面数据库的?


比如用户的好友列表,网店的购物车。

原来的设计是用一个大表,多个用户的数据放在一个表里面,每个数据行带一个 userid ,每次操作的时候,带上 userid 。

SPHiveDB 的做法,等于是所有数据先按 userid 分开,在具体的数据中,不需要再带上 userid 了。

论坛徽章:
0
18 [报告]
发表于 2009-12-07 18:15 |只看该作者
原帖由 iunknown 于 2009-12-7 17:22 发表


比如用户的好友列表,网店的购物车。

原来的设计是用一个大表,多个用户的数据放在一个表里面,每个数据行带一个 userid ,每次操作的时候,带上 userid 。

SPHiveDB 的做法,等于是所有数据先按 use ...

其实吧,我觉得,如果你做个mysql的类似plugin,用的人应该不少,sqlite,感觉用来做服务器的,比较少吧?

论坛徽章:
0
19 [报告]
发表于 2009-12-07 19:18 |只看该作者
原帖由 cugb_cat 于 2009-12-7 18:15 发表

其实吧,我觉得,如果你做个mysql的类似plugin,用的人应该不少,sqlite,感觉用来做服务器的,比较少吧?


mysql 的源代码不熟悉,如果要做类似的事情,mysql 可以用 plugin 的方式来实现?
可否具体介绍一下?

论坛徽章:
0
20 [报告]
发表于 2009-12-08 09:57 |只看该作者
原帖由 iunknown 于 2009-12-7 19:18 发表


mysql 的源代码不熟悉,如果要做类似的事情,mysql 可以用 plugin 的方式来实现?
可否具体介绍一下?

这个不是一两句能说清楚的,你找本讲MySQL内核的书看看吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP