社区
C++ 语言
帖子详情
想做一个以文件为存储介质的key,value系统,不知道有什么好思路
kingstarer
2011-12-16 11:27:12
要将一些key,value数据存放在文件中,支持快速查询,支持增,删,改
不知道要用什么数据结构比较好
希望实现简单,效率又不要太低
...全文
140
17
打赏
收藏
想做一个以文件为存储介质的key,value系统,不知道有什么好思路
要将一些key,value数据存放在文件中,支持快速查询,支持增,删,改 不知道要用什么数据结构比较好 希望实现简单,效率又不要太低
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kingstarer
2011-12-16
打赏
举报
回复
[Quote=引用 8 楼 demon__hunter 的回复:]
引用 5 楼 kingstarer 的回复:
引用 2 楼 demon__hunter 的回复:
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
红黑数在文件里面不好实现吧?(数据量比较大,放不进内存)
我现在想采hash来实现,用文件指针代替内存指针
但是不知道修改的时候怎么处理,因为修改value值,可能导致占用空间比……
[/Quote]
数据太大了 放不到内存
不放数据库,是因为数据库主机压力太大了。 不得不拆分部分功能自己实现
qq120848369
2011-12-16
打赏
举报
回复
要持久化的话,nosql... 任何一款产品都可以满足..
如果单纯是个缓存层,可以用memcached。
mLee79
2011-12-16
打赏
举报
回复
标准做法 B+ , 前几级索引放内存...
机智的呆呆
2011-12-16
打赏
举报
回复
[Quote=引用 5 楼 kingstarer 的回复:]
引用 2 楼 demon__hunter 的回复:
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
红黑数在文件里面不好实现吧?(数据量比较大,放不进内存)
我现在想采hash来实现,用文件指针代替内存指针
但是不知道修改的时候怎么处理,因为修改value值,可能导致占用空间比原来的大。
目前想到的方法是放弃原空间,重……
[/Quote]
操作是在内存里,需要做一个 map内存<-->文件 序列化/反序列化的操作
shayla
2011-12-16
打赏
举报
回复
楼主怎么不考虑直接用数据库
shayla
2011-12-16
打赏
举报
回复
继续关注
内存中的方法貌似都不适用。是不是可以研究SQLite源代码看看。
kingstarer
2011-12-16
打赏
举报
回复
[Quote=引用 2 楼 demon__hunter 的回复:]
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
[/Quote]
红黑数在文件里面不好实现吧?(数据量比较大,放不进内存)
我现在想采hash来实现,用文件指针代替内存指针
但是不知道修改的时候怎么处理,因为修改value值,可能导致占用空间比原来的大。
目前想到的方法是放弃原空间,重新申请空间,但是这样在修改删除操作时比较浪费空间
================================
各位有没有好的解决方法 或者有没有更好的数据结构?
薛定谔之死猫
2011-12-16
打赏
举报
回复
INI或Properties文件就是这么实现的,可以参考下开源实现,不过要快速只有通过载入内存操作,定时回写到文件~
glib中的hashtable就可以作为内存操作的数据结构的
机智的呆呆
2011-12-16
打赏
举报
回复
一楼 木有了
机智的呆呆
2011-12-16
打赏
举报
回复
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
taodm
2011-12-16
打赏
举报
回复
建议楼主放弃自己做的想法。
专业公司不是吃干饭的。没有受过专项训练的人自己做一般只会差,而且是差太多。
gw_net
2011-12-16
打赏
举报
回复
xml file
qq120848369
2011-12-16
打赏
举报
回复
[Quote=引用 14 楼 kingstarer 的回复:]
引用 13 楼 luciferisnotsatan 的回复:
引用 11 楼 kingstarer 的回复:
引用 8 楼 demon__hunter 的回复:
引用 5 楼 kingstarer 的回复:
引用 2 楼 demon__hunter 的回复:
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
红黑数在文件里面……
[/Quote]
你是打算持久化数据还是做缓存?
是为了什么目的用key-value?
介绍一下使用环境吧。
kingstarer
2011-12-16
打赏
举报
回复
[Quote=引用 13 楼 luciferisnotsatan 的回复:]
引用 11 楼 kingstarer 的回复:
引用 8 楼 demon__hunter 的回复:
引用 5 楼 kingstarer 的回复:
引用 2 楼 demon__hunter 的回复:
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
红黑数在文件里面不好实现吧?(数据量比较大,放不进内存)
我现在想采hash……
[/Quote]
数据量大 放不到内存
sqlite网上看过介绍,适合百万数据下,并且不支持并发查询
我要保存的是千万级的key,value信息
网上有现成的nosql产品,不过我还是想看看自己做的简单key,value能不能适用
如果能的话当然是自己做的好一些,毕竟心里有底
luciferisnotsatan
2011-12-16
打赏
举报
回复
[Quote=引用 11 楼 kingstarer 的回复:]
引用 8 楼 demon__hunter 的回复:
引用 5 楼 kingstarer 的回复:
引用 2 楼 demon__hunter 的回复:
c++ std::map
里面用红黑树实现的 O(log n)时间内做查找,插入和删除 应该可以吧
红黑数在文件里面不好实现吧?(数据量比较大,放不进内存)
我现在想采hash来实现,用文件指针代替内存指针
但是不知道修改……
[/Quote]
自己给map写个allocator
bobye1230
2011-12-16
打赏
举报
回复
sqlite这种小型数据库,对主机的压力应该不是太大把
缓存redis,消息队列rabbitmq
redis是
一个
key
-
value
存储
系统
。它支持存储的
value
类型相对更多,包括string、list、set、zset和hash。为了保证效率,数据都是缓存在内存中。 redis的出现,在部分场合可以对关系数据库起到很好的补充作用。 ...
分布式
key
-
value
存储
系统
的比较列表
http://blog.s135.com/post/394/http://blog.s135.com/post/329/===================================也许你正在考虑使用 专门的
key
-
value
或 document 存储,而不是传统的关系数据库。原因可能包括以下几个方面:...
Redis:
Key
-
Value
的NoSQL数据库
与MySQL数据库不同,MySQL数据库有表、有字段、有记录,Redis没有这些东西,就是
一个
名称对应
一个
值,并且数据以存储在内存中使用为主。Redis有它的数据持久化方案,分别是RDB和AOF,但是Redis自身并不是为了数据...
常见
Key
-
Value
存储
系统
的内存管理策略解析
Key
-
Value
存储作为NoSQL存储的一种常见方式,提供了比SQL数据库更好的可扩展性和读写性能。比如当前开源最热门的Memcached和Redis;淘宝的Tair、腾讯的Cmem、Amazon的Dynamo等等,无论是
做
缓存还是持久存储,均使用...
Redis---(
key
-
value
结构的NoSql数据库)
目录:一、Redis简介1. 什么是NoSql2. 什么是Redis二、Redis的安装三、Redis的使用 一、Redis简介 1. 什么是NoSql 在了解Redis之前,首先...NoSql有以下4种分类:键值(
Key
-
Value
)存储数据库、列存储数据库、文档型数...
C++ 语言
64,641
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章