让NoSQL支持简单条件查询

日期: 2011-04-17 作者:sixclub 来源:TechTarget中国 英文

  现在随着NoSql的迅速发展 NoSql也已经不是只一种概念,像MongoDB、tokyo tyrant等,一些乱七八糟的对Nosql 的介绍我就不说了,应为他只取决于key-value 的存储方式,所以他的速度就快,但是我如果想进行条件查询怎么版呢?只要改变一些逻辑就可以了,废话不多说了,下面只谈我的思路,怎么安装我就不说了。

  我测试用的是tokyo tyrant,我也是刚接触不久

  比如我要存一条新闻 curl -X PUT http://127.0.0.1:1978/1 -d “{“Title”:”This is the title”,”Content”:”This is the content”,”CreateTime”:”2011-4-12″}”

  内容是基于Json的数据格式,这条数据的key=1

  现在我要找到这条数据的话只能是根据key 来查询,也就是

  curl http://127.0.0.1:1978/1

  让他只是添加查询也只是多了一个步骤:

  就是拆分插入

  这是第一条

  curl -X PUT http://127.0.0.1:1978/2 -d “{“Title”:”This is the title”,”Content”:”This is the content”,”CreateTime”:”2011-4-12″}”

  curl -X PUT http://127.0.0.1:1978/Title=This is the title -d “2”

  curl -X PUT http://127.0.0.1:1978/Content=This is the content -d “2”

  curl -X PUT http://127.0.0.1:1978/CreateTime=2011-4-12 -d “2”

  这是第二条

  curl -X PUT http://127.0.0.1:1978/3 -d “{“Title”:”This is the title2″,”Content”:”This is the content2″,”CreateTime”:”2011-4-12″}”

  curl -X PUT http://127.0.0.1:1978/Title=This is the title2 -d “3”

  curl -X PUT http://127.0.0.1:1978/Content=This is the content2 -d “3”

  curl -X PUT http://127.0.0.1:1978/CreateTime=2011-4-12 -d “3”

  这里估计大家都明白了吧,这无非就是将一条数据拆开后再储蓄

  这样虽然数据量大了点你但查询的时候就可以用条件查询了

  比如我想查询今天的数据 curl http://127.0.0.1:1978/CreateTime=2011-4-12

  这样满足这个条件的就会是 2和3 这样就可以再根据这两个value 查询相应的key

  当然,也支持与或的多条件查询,分别请求

  curl http://127.0.0.1:1978/CreateTime=2011-4-12 这是今天的

  curl http://127.0.0.1:1978/Title=This is the title2 标题要等于This is the title2

  现在是两个条件匹配重复次数为2的 一条的结果是2和3 另一条的结果是3,这样3重复了两次,结果就是3了

  或的查询

  curl http://127.0.0.1:1978/Title=This is the title

  curl http://127.0.0.1:1978/Title=This is the title2

  我要查询标题为这两个的 然后把查询出来的value合并就可以去找结果了

  当然可以根据这样的思路你可以去写个与或合并的条件查询,这里由于时间关系我就不多说了

  还有就是说字段重复的问题,比如我这边的一条数据有个字段是Title 那边一跳数据格式不一样但也有个字段是Title 这样不就冲突了吗?这个问题你可以用表的概念

  比如一个是新闻的Title 你就写 News_Title=This is the title

  另一个是产品的Title 你可以写 Products_Title=This is the product title

  这样就不不会混淆了,思路来自于关系型数据库,仅供大家拍砖。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

sixclub
sixclub

相关推荐