日期:2014-05-16  浏览次数:20534 次

闲聊数据库

????最近学习数据库,由于没怎么认真的学,所以在这里只能闲扯谈下数据库。

?

?

????首先什么是数据库?我们为什么需要数据库?

????在数据库出现之前企业一直使用的是一种叫做文件系统的东东,文件系统在数据量小的时候还是可以满足用户的需求但是在数据量非常大,用户查询非常频繁的情况下文件系统就无法满足用户需求,所以必须对数据按照一定的数据机构来组织归类来提高查询修改的效率。所以后来就诞生了数据库。

????数据库首先是一种数据管理软件,可以理解为数据管理的仓库,我们可以利用数据库管理软件提供的各种接口来管理数据库中的数据,最典型的操作就是增删查改。我们进行的一系列数据库操作其实是我们利用api接口和数据库之间进行通信。这里我们要明确一点就是我们在数据库操作窗口中操作数据库中的数据,对于数据库的底层来说它还是改变或者读取文件系统中的文件数据,只不过数据库中的文件和我们一般的文件系统中的文件时不一样的。很多其他的应用比如搜索引擎也用到了某些文件管理策略,以达到快速读取的目的,自我感觉这东西确实比较高深,对于搜索引擎来说,搜索海量网页之后提取关键字,然后对关键字进行倒排索引,这些倒排文件时非常大的数据,因此如何对这些数据进行划分,如何存储,以何种格式存储以达到在毫秒级搜索效果是一项很关键的技术,也是被视为搜索引擎的核心技术!其实数据库中的很多策略都被应用到了搜索引擎,比如缓存策略,数据库也会对某些数据进行缓存,这些数据时用户经常查询的数据,因此在下次查询的时候就可以不在到底层文件系统中查找,直接返回结果即可。写个模型:

?

?

if(cache.contains(query)){

return?cache.get(query);

}else{

serchQueryInFS(query);

????????......

}

?

?

?

?????有些童鞋可能想不到这种缓存策略在搜索引擎中的作用,那么先了解一下搜索引擎中的2-8定律即:

80%的查询结果存在20%的网页中。

看到这样一条查询统计定律,你可能眼前一亮,意识到缓存策略是多么的省事!确实大多数搜索引擎都是靠这种策略来提升查询速度的。

?

?????好了真的扯远了,其实我根本就不懂搜索引擎,不要以为我是什么砖家!

?

?

?

?????好了再提出一个比较纠结的问题,数据库如何处理的高并发,比如现在1s50万个查询请求,上万个写入请求.......,还有当数据库存储海量数据的时候又怎么处理呢?纠结吧,嘿嘿!