海量数据的解决方案

本文仅概述对海量数据的解决方案,适宜观众:小白,大白请绕道。后续文章 高并发的解决方案

1、缓存和页面静态化

缓存主要使用于不频繁发生变化、实时性要求不高 的情况。
缓存分为两种方式:直接程序保存缓存框架

  • 直接程序保存即使用Map来对数据进行保存。
  • 缓存框架,如Memcache、redis等。
    缓存的创建:1. 第一次获取的时候;2. 程序启动;3. 缓存失效之后。
    缓存的失效:1. 定期失效;2. 数据发生变化时失效;3. LRU(less recently used);4. LFU(Least Frequently Used)。
    缓存中空数据的管理方法:对于部分数据,缓存中为空,数据库也为空,但是在每次访问该信息时,都会走缓存,走数据库。如文章的评论为空,则其缓存、数据库都是null。此时缓存就没有起到原本的作用。可以新建一个类(如NoCommet)来保存没有评论的缓存,这是系统就知道这是空缓存了。
    页面静态化:将程序生成的页面保存起来。只对部分需要改变的数据进行请求。
2、数据库优化

数据库优化

3、批量读取和延迟修改

Hibernate的做法。

4、读写分离

其本质是数据库集群,对一个服务器写(也叫主服务器),写完之后同步到其他服务器,其他服务器(从服务器)只管读取。在同步的过程中,可以分批同步,也可以一次同步。

5、分布式数据库

将不同的表存放在不同的数据库,放在多台服务器。这样在处理时,若需要调用多个表,则可以多台服务器同时处理。

6、NoSQL和Hadoop

Hadoop是将同一表中的数据分成多块并保存到多个节点(分布式),而且每一块数据都有多个节点保存(集群)。分布式可以加快处理,集群可以保障数据的安全(一个坏了还有别的)。
采用归并算法来处理数据,先对每一块的节点进行处理,然后处理其处理结果,最后合并。好处是将统一个查询分配到多个服务器,速度快。

海量数据的解决方案_第1张图片
Hadoop数据存储结构.png

你可能感兴趣的:(海量数据的解决方案)