现有oracle速度教慢,先尝试下大数据技术,如果搭建好hadoop并将病历数据转为hbase列式数据库,将读取hbase列式数据定义成服务,提供给外部访问,此做法是否可行?

0
问下我们数据中心是非java编写的,数据中心已建立好,马上改成java还需一段时间,目前病历数据主要是做查询,现有oracle速度教慢,先尝试下大数据技术,如果搭建好hadoop并将病历数据转为hbase列式数据库,将读取hbase列式数据定义成服务,提供给外部访问,此做法是否可行?
已邀请:
1

Bob - 同程旅游大数据+BI 架构师 2015-10-28 回答

楼上的几个问题确实需要你的解答。
 
单纯是想解决一个oracle查询慢而自建数据中心,这是不可取的。
你的病历数据多到oracle没法解决,公司的规模应该比较大了。在这种场景下,要从全盘考虑问题。
实时查询
1.HBase集群是一种方式,但是表设计是依赖特定查询场景的。因为基于rowkey扫描是最快的,如果仅仅是列扫描或列值扫描则会很慢。
如果你们下定决心只使用Hbase来承担查询,那么可以引入两个组件来解决:
一:prefix。让hbase集群支持以sql的方式来查询数据
二:在Hbase集群上搭建一个solr集群,通过索引的方式来减少对hbase集群的表扫描
2.spark集群也是一种实时查询方式。但是比较消耗服务器内存。你的数据中心建设需要采购一批大内存的机器。
这样你的一些实时查询都可以使用spark SQL来完成。
3.impala集群也是一个可选的方式。
 
以上三种方式都可解决实时查询的问题,在我们内部也有使用。如有其他问题,欢迎随时私信
1

牟瑞 - 大数据 Hadoop 讲师 Hadoop入门课程地址:http://www.hellobi.com/course/39 有架构师,技术总监,CTO的职位请联系我! 2015-10-28 回答

能否先问几个问题:
1.你们已有的数据量有多大,每天产生的数量有多大
2.oracle查询较慢原因是什么?是否经过排查?是数据量太大?还是服务器配置问题。
3.查询数据是什么类型,是单独的Key-Value的查询?还是关联查询?
4.数据格式是结构化的多一些还是非结构化的多一些?数据是文档数据么?
等等。
以上,不同的数据库或者方案,解决不同的应用场景,不同的应用场景采用不同的方案架构。没有一种数据库是解决所有问题的。
hbase如果是基于rowkey查询速度会比较快。但是如果你还想做类似的oracle的关联查询。那还是需要类似于SQL的查询方式。此时你可能还需要hive。但是hive是基于mapreduce的方式的,所以它的查询也是比较慢的。

要回复问题请先登录注册