首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

谈天数据库

2012-07-08 
闲聊数据库????最近学习数据库,由于没怎么认真的学,所以在这里只能闲扯谈下数据库。??????首先什么是数据库

闲聊数据库

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

?

?

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

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

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

?

?

if(cache.contains(query)){

return?cache.get(query);

}else{

serchQueryInFS(query);

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

}

?

?

?

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

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

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

?

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

?

?

?

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

我所知道的几种策略:

?

分布式处理:

数据分布式存储在集群中,采用数据备份策略,保证数据安全性和完整性;

?

读写分离策略:

分为两种形式,一种是在一台机器上写入之后再复制到其他机器上去,但是这样无疑会浪费磁盘空间,一种是在一个地方写,数据分布在不同机器上,各个机器的数据可能不同。

?

分布式缓存处理:

由多台机器组成一个大的缓存池每台机器缓存一部分数据,但是要解决一个问题,就是用户的一个请求,集群如何快速找到缓存的数据呢?一般采用hash策略,但是一般的hash的方法也会存在伸缩性的问题,一般都采用一致性hash方法;具体关于分布式缓存实现可以参考memcache;http://memcached.org/

?

?

分库分表处理:在处理海量数据的时候根据业务需求将数据库进行拆分,这样会在一定程度上解决存储问题,避免了超大表,但是这样无疑会有另外一个问题就是查询复杂度提高了。也会带来很多效率上的问题。

?

?

????还有当下流行的各种nosql非关系型数据库,内部也是基于分布式的处理策略,但是采用了非关系型的存储模式,适合于海量数据的存储。

?

<!--EndFragment-->

热点排行