您的位置:程序门 -> 专题开发/技术/项目 -> 数据结构与算法



续-假如有一亿个文章或书名,标题不重复……


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


续-假如有一亿个文章或书名,标题不重复……
发表于:2007-02-14 13:28:02 楼主
http://community.csdn.net/expert/topic/5340/5340679.xml?temp=4.165286e-02
原贴在上面这地址,因为回帖多,感觉分不够给了,开个新贴

谢谢大家的支持,我已经确定用b树做了,另外用静态变量做缓存,把经常查询到的10万条存在哈系表里,我想10万条作缓存够用了,因为数据虽多,但大部分是级少访问到的东西。
缓存方面制作没有什么问题,http://3http.com是我编写的论坛程序,也用了不少缓存,大家有兴趣可以看下。

但我在b树这方面还不太懂,原理什么的大概了解了,不过具体的例子没找到过,还有我的建立过程是让程序自动一条条的添加过程,我发现b树添加的过程中,是一分为二那么简单,但必需有个整理过程,即保证每层树都差不多多的子层数,就有可能需要移动大量的数据,感觉难点还在这个上面,因为数据实时在用,又要考虑移动这一点。


下面是我的制作思路,有兴趣的朋友提下意见
标题→自身id号→自身的数据文本→对应的书(可能多本)
                            ↘                                
                                自身的数据缓存


另外我说的一亿条,只是标题数量有一亿条,然后对应id号(自动生成,数字形式),id号对应具体的一个文本文件,文本文件里存放对应的本书,可能对应多本书,但这具体的书的数量就少多了,也采用id号顺序一本本的添加。

是一本书对应着很多标题,查询的是标题
发表于:2007-02-15 14:34:291楼 得分:0
用数据库不是很简单?为何要缓存?用数据库查询时间 <1s
发表于:2007-02-15 15:23:452楼 得分:0
用缓存快
发表于:2007-02-20 18:27:353楼 得分:0
3http.com这个论坛很有意思,页面即时响应,用户体验不错。

不明白b树移动什么意思,b树的移动应该只在结点内部,这个量不大,而且可以在内存中进行,然后整个结点写回硬盘。难道指的是结点在硬盘中的位置也要整理,反正保存地址物理位置随机没关系。

相同标题对应的多本书是在同一个id的文本文件中,还是不同文件中?
发表于:2007-06-12 12:53:524楼 得分:0
老贴,顶下
发表于:2007-06-15 10:27:125楼 得分:0
数据库方案

    1、把文章分组,比如首字母之类的分组方法
    2、每组放到不同表中
    3、查询时,先判断是哪一组,然后再查询该表

    举例:身份证查询,你设计的话不会把全国13亿的号码都放一起查询吧,甚至包括被注销的
    数据库已经很完善了,用得好,几亿数据量又算什么。

不用数据库?
        费用问题?可以选用免费的
        性能问题?你能保证你写的算法比常用的数据库好?我看这几乎是吹牛。
        就是不想用数据库,想用算法讨论学习而已?


题外话,楼主没说出影响设计的初衷,这是本帖的败点。
        要求达到某个性能、要求开发时间有限制、是否考虑软件费用等等都没具体提。
        简单来说,楼主就是需求表达不清,方向不明,导致游客理解各有着重,回答形形色色。
发表于:2007-06-22 00:57:486楼 得分:0
简单的方法,   树,   前面有说过这方法
举个例子:  
    文章或书名为:   "代码手册 "

代码   的hex   为:   b4   fa   c2   eb
那么读取文件   c:\b4\fa\c2\fb\file.txt     (前两个字为路径)
如果保存文件的路径,   加名称1024个字节那么1亿个文件
1000000000/128/128/128/128   =   3.7

1024*3.7   <   4096,   这个文件小于4k,   这个速度应该比较块了吧!
发表于:2007-06-23 21:49:337楼 得分:0
当然是数据库拉!


快速检索

最新资讯
热门点击