互联网百万级应用的大数据处理问题

探讨大数据量处理
服务器君一共花费了929.291 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

我说的大数据量处理是指同时需要对数据进行检索查询,同时有高并发的增删改操作。记得以前在XX做电力时,几百万条数据,那时一个检索查询可以让你等你分钟。现在我是想探讨下对大数据量的处理,那时我就在想例如腾讯,盛大,动辄数以亿计的帐号,怎么能这么快呢, 于是找到了互联网现在对数据处理的发展。

对于大数据量处理,如果是互联网处理的话,一般分为下面阶段:

  1. 第一阶段,所有数据都装入一个数据库,当数据量大了肯定就会出现问题,就像刚刚说的查询,于是想办法。
  2. 第二阶段,那时肯定想做缓存机制,确实可以如加上缓存Memcached,但缓存也是治标不治本,数据量太大了也是不行,于是有了下面的方法。
  3. 第三阶段,master-slave模式,进行主从数据库,master提供写,slave进行读,这个适合于有写造成数据库卡的方法,XX那个还是不行,于是——
  4. 第四阶段,垂直分库,这个意义还是不大,对于这种采集数据的,于是——
  5. 第五阶段,进行水平分库,这个不错,记得以前从兴也是按这个分时间水平分库,其实可以分的更细点估计效果更好
  6. 第六阶段,用nosql做了,关于nosql怎么做可以参考google的bigtable

其实本文主要目的也是想探讨nosql对大数据量的处理:

NOSQL就是将写操作在内存中进行,定时或按某一条件将内存中的数据直接写到磁盘上,一定基础上是解决了一些问题:

  1. 高并发读写的需求 
  2. 海量数据访问的需求
  3. 数据库横向扩展性的需求

CAP理论来说,nosql是牺牲了一致性,做到了AP,一致性只是保证了最终一致性。

缺点也很明显:

1. 当机器挂了数据将会丢失,可以考虑共享内存解决。

补充:其实这里可以展开了讲,一种是通过共享内存来实现。

集群内存:根据的是Quorum NRW理论,比如你有N台机子用来集群,每次你进行读写数据时可以至少要同步到X个节点才算成功,所以你每次读数据时只需要读大于N-X个节点就能保持你的正确率,其实就是对数据进行的冗余备份,不过我们存的是内存,相对于直接的磁盘操作,跨网络进行内存操作可以更快。

其实还一种保证数据一致性,就是记录日志,当数据每次写操作内存时都进行日志记录,然后再在内存中进行写操作,至少很多数据库就是这样做的,如redis。

2. 内存的限制,内存有限当写数据操作太大的时候内存也会爆。

解决:Bigtable的做法是通过bloom-filter算法合并掉相同的操作,比如UPDATE A='A' ,update A='B'时可以直接合并了。

基本理论基础

nosql理论基础:内存是新的硬盘,硬盘是新的磁盘

关系型数据库都要实现事务ACID,即:原子性(Atomicity),一致性(Consistency),隔离性(Isolation), 持久性(Durability)。

CAP理论:

  • Consistency 一致性
  • Availability -可用性
  • Partition -容错性

 大多数NoSQL数据库都不支持事务,不支持SQL等,所以还是得保留关系型数据库。现在有人提到用内存数据库, 总体如果是简单业务来说,NOSQL的速度比内存数据库更快,但NOSQL最大缺点,不支持事务,不支持SQL查询等。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1446,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1446

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《算法导论(原书第2版)》 科曼(Cormen T.H.) (作者), 等 (作者, 译者), 潘金贵 (译者)

《算法导论(原书第2版)》一书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。

更多计算机宝库...