Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346176
  • 博文数量: 105
  • 博客积分: 2730
  • 博客等级: 少校
  • 技术积分: 1110
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-20 12:09
文章分类

全部博文(105)

文章存档

2013年(3)

2012年(2)

2011年(36)

2010年(34)

2009年(6)

2008年(20)

2007年(4)

分类: Mysql/postgreSQL

2011-09-28 13:03:43

近期使用到了日本人开发的Handlersocket, 这是一个适用于Mysql InnoDB引擎的nosql数据库接口.
它使用C++实现,寄生在mysql服务器中,通过独立的几个端口进行服务,类似于memcache, 但是其协议更贴近数据库,可以进行定量的查询(limit/skip)/插入/update/update并返回原值等多种和sql等价的操作,但是不经过sql层.

Handlersocket的主页在github上:


我为它编写了一个Haskell客户端API:



用cabal即可安装:
cabal install HandlerSocketClient


使用:
假设server端已经配置好,客户端可以非常简单地进行一些常用操作,并且还能用更低级的API完成一切复杂的操作.


haskell测试代码:
main = do
 hs <- connectTo "127.0.0.1" "9999"
 r1 <- runReqOpen hs "test" "t1" "PRIMARY" "k,v"
 putStrLn $ show r1
 r2 <- runReqFind hs ">" "1" 100
 putStrLn $ show r2
 r3 <- runReqInsert hs ["99", "77"]
 putStrLn $ show r3
 r4 <- runReqUpdate hs "99" ["101", "77"]
 putStrLn $ show r4
 r5 <- runReqDelete hs "101"
 putStrLn $ show r5
 r6 <- runReqGeneric hs ["0","+","2","555","999"]
 putStrLn $ show r6

对于varchar的项,直接可以存入2进制串,包括0.
open操作的第四个参数必须使用"PRIMARY", 
而最后一个参数要给出用逗号分隔的key,values字段,
对于多个字段也是支持的,
 key字段一定要是PRIMARY,并且只有1个PRIMARY.
建表语句示例:
create table test.t1 (k int primary key, v varchar(1000))engine=InnoDB;
注意主键和指定InnoDB;
阅读(798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~