一个关于内存中搜索数据的问题.有好的方案追加分数~

Bot制造师 2010-12-12 06:07:19
项目里碰到一个设计上的问题:

假设在内存中存有大量的user对象,每个user对象都拥有各自的level,gold,location,items等信息(分别表示用户的等级,金钱,当前位置,所持物品)
现在的需求是要在内存中搜索出满足条件(例如:level属于[min,max]范围内的,gold=g,location=l,items包含某个物品item_no01)的N个user
在不能使用数据库查询的前提下,如何设计比较好?
例如把level进行分层,把location进行hash,先从level集合中筛选,再从location的hash表里hash出集合,再比对?有些地方可能避免不了遍历所有user进行死算,但是大家有没有比较好的最优设计方案?
...全文
176 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cranium 2010-12-13
  • 打赏
  • 举报
回复
关注下解决方案
Bot制造师 2010-12-13
  • 打赏
  • 举报
回复
对的,就是想要实现select * ... where ...的底层机制...简单看了下innodb引擎的底层数据结构..还是没有头绪.
还没想好 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ptozys27 的回复:]

听起来好像是 select 语句的 底层实现啊?
[/Quote]

那个同感。

不知道使用stl里面的一些算法+谓词等协作,效率会怎么样?没有这方面的经验。期待有经验者,学习。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lyjdamzwf 的回复:]
引用 3 楼 iambic 的回复:

直接拿来用啊,为什自己写,浪费生产力啊。

个人也不想做那么蛋疼的事儿...但是上头说不要用第三方的,实在不行就让我们死算,但是到时候服务器抗不住了还是我们的事儿,哎
[/Quote]

数据库的缓存部分就可以满足你的要求吧,现在有很多架构里数据库不落地,memcachedb,可以看看。
ptozys27 2010-12-13
  • 打赏
  • 举报
回复
听起来好像是 select 语句的 底层实现啊?
futurepi 2010-12-12
  • 打赏
  • 举报
回复
不懂帮顶
Bot制造师 2010-12-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iambic 的回复:]

直接拿来用啊,为什自己写,浪费生产力啊。
[/Quote]
个人也不想做那么蛋疼的事儿...但是上头说不要用第三方的,实在不行就让我们死算,但是到时候服务器抗不住了还是我们的事儿,哎
iambic 2010-12-12
  • 打赏
  • 举报
回复
直接拿来用啊,为什自己写,浪费生产力啊。
Bot制造师 2010-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]

要不然线性遍历,要不然用内存数据库。自己维护索引不划算。除非你每次搜索的条件都是一样的。
[/Quote]
恩,我也正在搜一些内存数据库 搜索技术的文章,但是没有找到可参考的资料.实在不行就只能找个开源的内存数据库啃搜索部分的源码了吗...不知道哪位大侠能给我讲下基本原理
iambic 2010-12-12
  • 打赏
  • 举报
回复
要不然线性遍历,要不然用内存数据库。自己维护索引不划算。除非你每次搜索的条件都是一样的。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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