状况说明:mysql
如今须要作一个数据存储,500w左右的数据,往后天天大约产生5w条左右的数据。想把这些数据存储起来,供往后的数据分析用?使用上面说的三种数据库中的哪中比较好?是否有必要创建集群?sql
我的见解是:从长远角度看,因为单台机器的性能瓶颈,后期确定要作集群,单纯的作复制最终也没法缓解单台master上读的负担。所以,使用mysql的话会使用cluser。可是了解到mysql的cluser要用好的化还要作负载均衡,而mysql的均衡器是第三方的,没法很好的与mysql整合。使用mongodb的自动分片集群能很好的解决这个问题,并且它的读写性能也快。Hbase提供了大数据存储的解决方案。mongodb
回到我问题,最终是要在大数据的基础上作数据分析,虽然mongodb也能与Mapreduce整合,但想必Hbase作这一块会更有优点。数据库
咱们的需求是作一个数据仓库,不是线上数据,便是OLAP。数据来源是不少的线上数据库(咱们用的是mysql),每隔一段时间会同步数据过来(大概是几天的样子)。这些数据将用于往后的数据分析。所以,对实时性要求不是很高。并发
答案:负载均衡
百万级的数据,不管侧重OLTP仍是OLAP,固然就是MySql了。elasticsearch
过亿级的数据,侧重OLTP能够继续Mysql,侧重OLAP,就要分场景考虑了。高并发
实时计算场景:强调实时性,经常使用于实时性要求较高的地方,能够选择Storm;oop
批处理计算场景:强调批处理,经常使用于数据挖掘、分析,能够选择Hadoop;性能
实时查询场景:强调查询实时响应,经常使用于把DB里的数据转化索引文件,经过搜索引擎来查询,能够选择solr/elasticsearch;
企业级ODS/EDW/数据集市场景:强调基于关系性数据库的大数据实时分析,经常使用于业务数据集成,能够选择Greenplum;
数据库系统通常分为两种类型:
一种是面向前台应用的,应用比较简单,可是重吞吐和高并发的OLTP类型;
一种是重计算的,对大数据集进行统计分析的OLAP类型。
传统数据库侧重交易处理,即OLTP,关注的是多用户的同时的双向操做,在保障即时性的要求下,系统经过内存来处理数据的分配、读写等操做,存在IO瓶颈。
OLTP(On-Line Transaction Processing,联机事务处理)系统也称为生产系统,它是事件驱动的、面向应用的,好比电子商务网站的交易系统就是一个典型的OLTP系统。OLTP的基本特色是:
数据在系统中产生;
基于交易的处理系统(Transaction-Based);
每次交易牵涉的数据量很小;
对响应时间要求很是高;
用户数量很是庞大,主要是操做人员;
数据库的各类操做主要基于索引进行。
分析型数据库是以实时多维分析技术做为基础,即侧重OLAP,对数据进行多角度的模拟和概括,从而得出数据中所包含的信息和知识。
OLAP(On-Line Analytical Processing,联机分析处理)是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。OLAP系统是跨部门的、面向主题的,其基本特色是:
自己不产生数据,其基础数据来源于生产系统中的操做数据(OperationalData);
基于查询的分析系统;
复杂查询常用多表联结、全表扫描等,牵涉的数据量每每十分庞大;
响应时间与具体查询有很大关系;
用户数量相对较小,其用户主要是业务人员与管理人员;