Chinaunix

标题: 哪位给推荐个简易数据库 [打印本页]

作者: zhujiang73    时间: 2017-12-27 20:03
标题: 哪位给推荐个简易数据库
本帖最后由 zhujiang73 于 2018-01-01 14:24 编辑

哪位给推荐个简易数据库,就存储 key 和 value 但是 value 可能是个 structure。


             网上转了一圈最后还是选了这个 :
初步方案就用  protobuf  配 lmdb 了,哪位同意这个方案,我就给分了。
            

作者: __BlueGuy_    时间: 2017-12-27 20:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: cokeboL    时间: 2017-12-27 20:48
就 mongodb 吧
作者: zhujiang73    时间: 2017-12-27 21:41
回复 2# cokeboL

  mongodb  似乎太大了,还要服务端。
  目前就需把一堆 structure 加上 key 存到一个数据文件里,读取的时候按 key 取数据。

作者: yakczh_cu    时间: 2017-12-27 22:02
ini/base64(json)
作者: bruceteen    时间: 2017-12-28 08:15
sqlite
                  
作者: hellioncu    时间: 2017-12-28 10:22
需求还不够详细,如读写频度,value的size范围,要不要实时持久化。。。
作者: lxyscls    时间: 2017-12-28 11:31
zhujiang73 发表于 2017-12-27 21:41
回复 2# cokeboL

  mongodb  似乎太大了,还要服务端。

redis/leveldb

你把structure按照binary的格式存取就可以了

redis需要server,leveldb直接编在app里面,都有持久化功能

作者: dorodaloo    时间: 2017-12-28 13:13
std::map

作者: zhujiang73    时间: 2017-12-28 13:29
回复 6# hellioncu
数据类似这个
  1. {
  2. string               id
  3. vector<int>      aaa
  4. vector<float>    bbb
  5. vector<string>  ccc
  6. }
复制代码
有几组这样的数据,每组大概几万个,是程序 a 的计算结果,要保存这个结果到数据文件中,给其他程序查询,根据 id 读取数据。

作者: hellioncu    时间: 2017-12-28 14:32
zhujiang73 发表于 2017-12-28 13:29
回复 6# hellioncu
数据类似这个
有几组这样的数据,每组大概几万个,是程序 a 的计算结果,要保存这个 ...

要是我来做,就每个id存一个文件

作者: zhujiang73    时间: 2017-12-28 14:51
hellioncu 发表于 2017-12-28 14:32
要是我来做,就每个id存一个文件

      这样行是行,不过一股某某外包代工厂的风格扑面而来。

作者: hellioncu    时间: 2017-12-28 15:06
zhujiang73 发表于 2017-12-28 14:51
这样行是行,不过一股某某外包代工厂的风格扑面而来。

我比较看不起做外包的
程序间的接口越简单越好,当然读的程序也归你做那就要整体考虑了

作者: cokeboL    时间: 2017-12-28 17:50
你是客户端用?直接mmap一个文件,所有数据都用mmap上的,多省事

作者: lxyscls    时间: 2017-12-28 18:02
回复 11# hellioncu

基于文件的存储,最大的问题,就是你需要自己做互斥
作者: hellioncu    时间: 2017-12-28 18:40
lxyscls 发表于 2017-12-28 18:02
回复 11# hellioncu

基于文件的存储,最大的问题,就是你需要自己做互斥

他这个需求应该不会读写并发的

作者: zhujiang73    时间: 2017-12-29 13:24
lxyscls 发表于 2017-12-28 11:31
redis/leveldb

你把structure按照binary的格式存取就可以了




    查了几天资料,现在准备用 protobuf 做数据的序列化,然后 leveldb 应该能用,不过 leveldb  好像有点老。  

作者: lxyscls    时间: 2017-12-29 13:56
回复 17# zhujiang73

NoSQL也就是最近十年的事,怎么会老?http://leveldb.org/
其实建议直接存Binary,反正是app自己用。当然如果有向后兼容的话,可以考虑序列化。

作者: zhujiang73    时间: 2017-12-29 14:22
lxyscls 发表于 2017-12-29 13:56
回复 17# zhujiang73

NoSQL也就是最近十年的事,怎么会老?http://leveldb.org/



       网上转了一圈最后还是选了这个
  1. set(lmdb_srcs "${PROJECT_SOURCE_DIR}/src/mdb.c")
  2. set(lmdb_srcs  ${lmdb_srcs}  "${PROJECT_SOURCE_DIR}/src/midl.c")
复制代码
     只是悬赏积分好像不能给自己。

      用某脚本语言调通了验证程序,此数据库应该合适。  

作者: ziyekuyu    时间: 2017-12-29 16:32
sqlite  +1
作者: lxyscls    时间: 2017-12-29 16:46
回复 19# zhujiang73

再给你来个...http://vedis.symisc.net/
作者: zhujiang73    时间: 2017-12-29 18:31
lxyscls 发表于 2017-12-29 16:46
回复 19# zhujiang73

再给你来个...http://vedis.symisc.net/



            人生苦短,我要先试试再说:
  1. pip3  install  vedis
复制代码
          ......   

作者: q1208c    时间: 2017-12-30 13:07
json

或者 sqlite
作者: zhujiang73    时间: 2017-12-30 17:02
lxyscls 发表于 2017-12-29 16:46
回复 19# zhujiang73

再给你来个...http://vedis.symisc.net/




        这个 vedis 似乎和序列化不兼容,存入数据库的 bytes 都变成了 str,然后反序列化就失败了。


        protobuf  配合 lmdb 就没有这类问题,现决定初步方案就用  protobuf  配 lmdb 了。  

作者: yulihua49    时间: 2017-12-31 09:27
zhujiang73 发表于 2017-12-30 17:02
这个 vedis 似乎和序列化不兼容,存入数据库的 bytes 都变成了 str,然后反序列化就失败了 ...

对。你实质上是需要序列化/反序列化工具。

作者: zhujiang73    时间: 2018-01-01 13:01
初步方案就用  protobuf  配 lmdb 了,哪位同意这个方案,我就给分了。
作者: action08    时间: 2018-01-02 22:06
粗布感觉sqlite不错,应该还有更好的。数据是互联网级别的就自己全部造轮子吧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2