大数据:数据库类型简介

这篇文章,作为抛砖引玉,给大家介绍各种常见数据库的类别。在之后还有发布一些文章,针对性地分析同一个类别中的数据库的优缺点。

这将是一个系列的文章,几个从事大数据工作的朋友,组成一个大数据学习小组,对大数据的知识体系进行一次系统的梳理。

在下表中,从几个维度简单展示了当下流行的一些数据库的特性,让大家能有个初步认识。在做出分类时,会有不准确的情况,比如Oracle是否支持内存存储,Oracle的临时表,或者新版本可以存储在内存中。本文将Oracle归类于‘不支持内存存储’,是希望告诉大家,通常情况下,Oracle的数据都在存储在磁盘上,而不是内存里。

常用数据库类型统计

数据库 分类 内存存储 列存储 K/V存储 文件存储
Kafka 消息队列 支持 不支持 不支持 不支持
mongodb 文档数据库 不支持 不支持 不支持 支持
FastDFS 文档数据库 不支持 不支持 不支持 支持
Neo4J 图数据库 不支持 不支持 不支持 不支持
ElasticSearch 索引数据库 支持 不支持 支持 支持
Solr 索引数据库 支持 不支持 支持 支持
MyCAT 数据库中间件 不支持 不支持 不支持 不支持
Memcache 内存数据库 支持 不支持 支持 支持
Redis 内存数据库 支持 不支持 支持 支持
SAP HANA 内存数据库 支持 支持 支持 支持
db4o 面向对象数据库 不支持 不支持 不支持 不支持
Vertica 列式数据库 不支持 支持 不支持 不支持
Oracle 关系型数据库 不支持 支持 不支持 支持
MySQL 关系型数据库 不支持 不支持 不支持 支持
SQL Server 关系型数据库 不支持 不支持 不支持 支持
OceanBase 关系型数据库 不支持 不支持 不支持 不支持
HIVE 关系型数据库 不支持 不支持 不支持 不支持
MPP 关系型数据库 不支持 支持 不支持 支持
GreenPlum 关系型数据库 不支持 支持 不支持 支持
PostgreSQL 关系型数据库 不支持 不支持 不支持 支持
NeoView 关系型数据库 不支持 不支持 不支持 不支持
Cassandra NoSQL数据库 不支持 支持 支持 支持
Hbase NoSQL数据库 不支持 支持 支持 支持

同时也抛出几个问题,帮助大家更好的理解数据库:

1. 数据库集群与分布式数据库的区别?

从应用开发人员/用户感知上,没什么区别。通常说Oracle,MySQL是数据库集群,Hadoop,MyCat是分布式数据库,事实上,他们都可以分布式(一群服务器串在一起)。他们都可以做大数据。

2. Oracle和MySQL区别大吗?

可以很大,除了费用上的区别,安全性,稳定性,易维护等很多方面Oracle都更优。但是普通的项目都是感知不到这些区别的。一般都是大公司(有钱),或者银行存交易数据(很重要),才极力推荐Oracle。

3. 内存数据库是啥?

内存的读写效率比磁盘高,所以内存数据库一定更快,也一定更贵。

4. 哪些场景适合使用内存数据库?

新浪微博热搜排名,数据碰撞(出入闸机在你刷卡的一瞬间检查你是否在黑名单)。

5. 列存储是啥?

传统的数据存储形式就像excel(行存储)。列存储就是以列为存储单元。

6. 列存储优缺点?

列存储写很慢,读很快。不支持高并发。

7. 哪些场景适合使用列存储数据库?

BI分析(快速读取数据),如果只是单列(单一维度),关系型数据库做索引即可,但是分析需要用到多列,做多个索引,甚至全索引不如用列数据库;某些复杂的精准查询,普通的精准查询关系型数据库即可,比如当表结构常发生变化时。

8. 什么是K/V数据库?

Key-Value的效果等同于索引,所以查询速度更快。

9. 文件存储?

某些数据库支持文件存储,照片等有时可以存在数据库中,而不是单独的文件服务器,甚至是文件集群。

我个人认为,在数据库选型时,需要考虑“合适”,不要盲目地学新东西,也不要盲目地把系统复杂化。

工作中存在许多选择错误数据库的情况,一部分人是因为不了解,一部分人是因为为了噱头。很多公司,甚至政府部门,面对几百G,甚至几十G的数据时,他们就会认为“这就是大数据”,必须要用前沿技术解决。实际是,即使是MySQL,多一些服务器,较好的设计维护,几百个T的数据也能流畅运行。

我看到很多系统,都存在过度设计的问题。比如只是做精准查询,明明Mysql也能做,偏偏要搭建ES集群;做文件存储,明明Hbase,Oracle也行,偏偏要搭个FastHDFS。并不是这些组件不好,只是一个轻量级的系统,何必做那么多模块呢。

你可能感兴趣的:(大数据体系)