让NoSql支持简单条件查询
现在随着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
这样就不不会混淆了,思路来自于关系型数据库,仅供大家拍砖
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)