最近互联网技术有四个趋势非常火爆:
- 移动
- 社交
- 云计算
- 大数据
不管再牛X的技术人员,都是要老老实实做需求的,老板简单的需求往往可以把几个超牛X的技术人员搞得痛不欲生。从目前来看需要大数据的主要应用领域,也只有两个:
联机事务处理OLTP(On-line Transaction Processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP一般就是把大数据用于在线业务,比如淘宝的订单交易、商品展示、历史交易、百度的网页搜索、新浪的微博内容展示等。这种需求要求有实时性,查询以后需要在秒级别返回,且对于服务稳定性和容错性有一定要求的。另外,读操作的数量远远大于写操作,且增量数据的大小要远远小于历史数据。在设计OLTP的数据系统中,主要技术难点有:
- 分层
- 分片
- 分布式事务
- 列存储
- 降维
- 切分
OLTP | OLAP | |
用户 | 操作人员,低层管理人员 | 决策人员,高级管理人员 |
功能 | 日常操作处理 | 分析决策 |
设计 | 面向应用 | 面向主题 |
数据 | 当前的, 最新的细节的, 二维的分立的 |
历史的, 聚集的, 多维的,集成的, 统一的
|
存取 | 读/写数十条记录 | 读上百万条记录 |
工作单位 | 简单的读写 | 复杂查询 |
DB大小 | 0-100G | TB-PB级别 |
而OLAP相对起来较为复杂,由于数据是多维的,以往以语义性著称的SQL语言也在数据分析时显得力不从心。在这方面建模和抽象变得很重要,如何解决数据的语义性和查询的可描述性变得很困难。相比起来,这方面的突破才显得不那么容易。目前OLAP主要的开源产品包括HDFS、HIVE和Impala等,至于商业产品,因为没有机会用到,在这里就不提了
总体来看,如何根据需求来设计系统才是一个技术人员需要考虑的问题,过分的设计和过分的资源消耗都是不合适。下次我们再介绍下OLTP里的分层思想
转载于:https://blog.51cto.com/guolingyu/1189387