语法问题

关系型数据库用的是sql, hive用的是类sql,两个语法相似,但是还是有点区别的

数据存储位置

hive数据是存到hdfs上面的, 关系型数据库是存到本地磁盘或者别的块设备上.

数据更新方便

关系型数据库增删改查都能写,hive只能写查询和新增,因为hive数据存放到hdfs上面,hdfs是不支持随机写的

索引方面

关系型数据库是有索引的,hive也有索引,但是实现方式是不一样的. hive索引作用时是在进行输入的时候会把指定的目录过滤出来,给其它目录过滤掉.

MySQL索引是方便快速将数据从块儿中找出来.

hive加载数据时候不会对数据进行任何处理,不会对数据进行扫描,没有对数据某个key建立索引,hive要访问数据中满足条件的特定的值的时候,需要暴力的扫描整个数据, 因此访问延迟较高,由于使用的是MapReduce,Hive可以并行的访问数据,因此即使没有索引,大数据量的访问hive仍然有优势.

由于hive的数据的访问延迟较高,所有hive不适合在线数据的查询.

执行方面

hive是通过MapReduce来执行的, 而关系型数据库有自己的执行引擎.比如说InnoDB啥的

执行延迟方面

hive在查询的时候,由于没有索引,需要扫描整个表,延迟较高,还有一个原因是hive底层是MapReduce,由于MapReduce本来延迟就高.所以hive延迟也高.

数据库在执行少量数据的时候延迟较低,但是如果数据量规模大到超过数据库的处理能力的时候,延迟一样高.

可扩展方面

hive是建立在hadoop之上的,hadoop可扩展,所以hive也可扩展

数据规模

hive支持大量数据,MySQL支持少量数据