有没有什么算法实现:索引字符串的磁盘存储?

feiren127 2018-08-29 04:12:54
现在有一个map<int,string>的对象,由于数据量比较大在内存中无法存储,有没有什么算法能实现在磁盘中存储map数据的功能,能使:增、删、改、查对磁盘操作都最小化的那种。
...全文
522 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 feiren127 的回复:
数据库也不行,它太慢了,几千万条数据要秒级处理;所以想找一个能支持文件的内存映射算法


你的意思是你自己实现大数据的增、删、改、查比数据库快?
feiren127 2018-09-04
  • 打赏
  • 举报
回复
我现在知道的只有leveldb,但是leveldb它会生成几百文件,不太适合使用
feiren127 2018-09-04
  • 打赏
  • 举报
回复
数据库也不行,它太慢了,几千万条数据要秒级处理;所以想找一个能支持文件的内存映射算法
feiren127 2018-09-04
  • 打赏
  • 举报
回复
hash映射那是内存的存储不了几条数据
feiren127 2018-09-04
  • 打赏
  • 举报
回复
引用 7 楼 blueice12 的回复:
sqlite,IOS和安卓现在都在用它,性能上应该是可以满足要求的。

sqlite肯定是不行的,人家有做过性能测试的,一秒钟也就读取十几万条数据左右,千万级别真的需要几分钟读取,插入更慢也就几万条每秒;手机上从来都不处理大数据量,感觉上面的APP都比较像玩具;真实做事情还得由计算机来做
feiren127 2018-09-04
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
[quote=引用 9 楼 feiren127 的回复:]
[quote=引用 6 楼 DelphiGuy 的回复:]
[quote=引用 4 楼 feiren127 的回复:]
数据库也不行,它太慢了,几千万条数据要秒级处理;所以想找一个能支持文件的内存映射算法


你的意思是你自己实现大数据的增、删、改、查比数据库快?
[/quote]
毫无疑问数据库一次取几千万条数据出来那时间就不可能忍受了,它的存储也很慢几千万条数据都一个G了,一次存储进去那时间更长;如果使用二进制文件就可以做到秒级读取、秒级存储;不会像数据库都是分钟级别[/quote]

你前面都说了“数据量比较大在内存中无法存储”,为什么要一次取几千万条数据?使用二进制文件就可以做到秒级读取、秒级存储是一次取几千万条数据?使用二进制文件就可以做到秒级读取、秒级存储是增、删、改、查的性能?你这完全是不对称比较。
[/quote]
Excel就可以做的到,也是用树形算法进行的文件存储,所以你发现编辑文件从来都不卡,并且数据也基本不占用内存。但是我不知道它的实现算法
  • 打赏
  • 举报
回复
引用 9 楼 feiren127 的回复:
[quote=引用 6 楼 DelphiGuy 的回复:]
[quote=引用 4 楼 feiren127 的回复:]
数据库也不行,它太慢了,几千万条数据要秒级处理;所以想找一个能支持文件的内存映射算法


你的意思是你自己实现大数据的增、删、改、查比数据库快?
[/quote]
毫无疑问数据库一次取几千万条数据出来那时间就不可能忍受了,它的存储也很慢几千万条数据都一个G了,一次存储进去那时间更长;如果使用二进制文件就可以做到秒级读取、秒级存储;不会像数据库都是分钟级别[/quote]

你前面都说了“数据量比较大在内存中无法存储”,为什么要一次取几千万条数据?使用二进制文件就可以做到秒级读取、秒级存储是一次取几千万条数据?使用二进制文件就可以做到秒级读取、秒级存储是增、删、改、查的性能?你这完全是不对称比较。
feiren127 2018-09-04
  • 打赏
  • 举报
回复
引用 8 楼 housecarl 的回复:
千万级别的数据操作,现在不都是用redis的吗?这个本质上还是映射到内存的。而且,听同事说,redis只要内存够大,没有存不下来的。如果楼主的程序在本地电脑上存不下来,就放到服务器的内存里面呗。发个指令,让服务器告诉你结果不就可以了。

redis不行,因为内存不够;就比如Excel它就可以编辑几个G的数据文件,但它的内存只占用了几百兆,它就是使用一种临时文件存储的算法,它可以实现速度很快的增删该查功能
feiren127 2018-09-04
  • 打赏
  • 举报
回复
引用 6 楼 DelphiGuy 的回复:
[quote=引用 4 楼 feiren127 的回复:]
数据库也不行,它太慢了,几千万条数据要秒级处理;所以想找一个能支持文件的内存映射算法


你的意思是你自己实现大数据的增、删、改、查比数据库快?
[/quote]
毫无疑问数据库一次取几千万条数据出来那时间就不可能忍受了,它的存储也很慢几千万条数据都一个G了,一次存储进去那时间更长;如果使用二进制文件就可以做到秒级读取、秒级存储;不会像数据库都是分钟级别
轻箬笠 2018-09-04
  • 打赏
  • 举报
回复
千万级别的数据操作,现在不都是用redis的吗?这个本质上还是映射到内存的。而且,听同事说,redis只要内存够大,没有存不下来的。如果楼主的程序在本地电脑上存不下来,就放到服务器的内存里面呗。发个指令,让服务器告诉你结果不就可以了。
blueice12 2018-09-04
  • 打赏
  • 举报
回复
sqlite,IOS和安卓现在都在用它,性能上应该是可以满足要求的。
赵4老师 2018-08-30
  • 打赏
  • 举报
回复
数据库

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧