单位为1亿以上数据量,如果将查找/排序/添加/删除/移动/唯一/固定在1秒以下?

Clonne 2012-11-09 10:11:18
假如数据的结构是这样:

typedef struct
{
char name[64]; // id
char note[256];
date create_time;
...
}DataUnit;

而有上亿个这样的数据的话,如果能将对这些数据的处理的速度尽量加快?

是该用数组?还是链表?还是树?是该用什么算法?

首先我假定一下每个数据的大小:24KB
再假定总数据量:3亿

我的CPU是Intel E6500,内存2G,硬盘1TB。
需要怎样的技术,才能将每次操作数据时间维持在1秒以下?每个操作都可能有遍历、和换位。
...全文
243 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一叶之舟 2012-11-09
  • 打赏
  • 举报
回复
如果换成10G内存,500G硬盘,你用map在内存中就可以实现了。
一叶之舟 2012-11-09
  • 打赏
  • 举报
回复
用分布式数据库,或是oracle做分区表基本上达以实现。
miliggate 2012-11-09
  • 打赏
  • 举报
回复
这个是硬件的问题了吧。。 如果可以提供准确的插入/删除的位置,1秒一下可以 但是内存会不足 我是过用map实现一棵树 结果4千W个节点竟然用了我2G多的内存。。 用vector才300M
赵4老师 2012-11-09
  • 打赏
  • 举报
回复
固态硬盘加数据库
baichi4141 2012-11-09
  • 打赏
  • 举报
回复
大规模数据处理,需要根据实际需求来分析,包括数据类型,数据特征,数据量,硬件条件等等 不要凭着空想,提一些不可能的硬指标 每个数据的大小:24KB 总数据量:3亿 总数据大小:6.866TB 别说内存,你的1TB的硬盘都放不下这么多数据,更不用提什么1秒内处理完成 况且处理数据是怎么个处理?如果是单选一个出来处理的话,也就是预先按某种算法所有数据分块,处理时直接按算法找到所在块读入内存处理,不会比处理单个数据慢太多,而如果是遍历所有数据并处理的话,假设1秒处理3亿数据,Intel E6500主频3G,姑且看作1秒钟3亿条指令(实际上几乎不可能),那么你的遍历处理除了最简单的加法之外,没有任何其他处理能够在1秒内完成——一个24KB的数据怎么可能只执行一次最简单的加法?
bravery36 2012-11-09
  • 打赏
  • 举报
回复
我觉得可能考虑将数据按特征分组。如果都是在同一个数据库里存储的话,就算是像berkeley db core这样子的key-value结构,存取性能也不一定能达到你的要求。
proorck6 2012-11-09
  • 打赏
  • 举报
回复
研究透了这个问题,你可以编一个数据库出来了。 或者直接使用成熟的数据库产品?
jiandingzhe 2012-11-09
  • 打赏
  • 举报
回复
我不擅长数据结构。但是我觉得不可能对上述所有的操作使用相同的时间要求,因为不同的数据结构所偏向的能力是不同的。 楼主的这个数据量非常大,看来只能放在硬盘上。你还是看看已有的数据库引擎吧。 另外你需要重新考量你的需求:是不是真的需要遍历所有的那些数据,还是其实只需要其中的一部分?
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。

64,681

社区成员

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

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