我对大数据领域非常陌生。团队建议我们应该使用hbase而不是rdbms来提高性能。我们不知道在将RDM转换为hbase之前应该/必须考虑什么。有什么想法吗?
7qhs6swi1#
这是一个很难回答的问题,有很多事情要考虑。你能优化你的关系数据库吗?添加索引,对代价太大的连接进行非规范化。。。有很多路要考虑,我不是Maven。你的数据大吗?这是非常模糊的,在rdbms和大数据之间有一个空间,你不能确定使用哪一个。rdbms仍然可以有效地处理数百万行。你的数据需要关联吗?nosql数据库不使用关系,这对sql背景的人来说可能很难做到。有一些框架将sql提供给hbase,但一般来说,在使用大数据时使用rdbms模型是个坏主意如果你能回答这些问题,并且你认为nosql是一种训练,那么问问你的团队他们对此有何看法。nosql数据库带来了在sql世界中永远不会遇到的问题。他们应该首先建立一个原型来了解所有这些是如何工作的,也许可以为他们提供一些培训。总而言之:-查找是否需要非关系数据库-选择正确的一个(hbase真的是你需要的吗?为什么不考虑cassandra或mongodb?)
0g0grzrc2#
我最喜欢的一本书描述了。。说到@whitefret的最后一点:有一种叫做cap-theorm的东西可以用来做决定。一致性(所有节点在同一时间看到相同的数据)可用性(每个请求都会收到一个关于它是成功还是失败的响应)分区容差(尽管由于网络故障而进行了任意分区,系统仍能继续运行)
但是,要将rdbms切换到hbase,可以使用sqoop。
aor9mmx13#
像所有nosqldb一样,hbase提供了很多新特性,但遗憾的是,没有什么是免费的(甚至没有提到钱的成本)。在hbase中,您真的应该检查您可能想要执行的所有查询是否都可以用hbase数据模型填充。需要考虑的一个重要问题是模式设计(最重要的是rowkey的模型化)。我建议你读一读这篇非常好的论文:http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/9353-login1210_khurana.pdf我认为在hbase官方网站上可以找到对你问题的一个很好的答案。“hbase并非适用于所有问题。首先,确保你有足够的数据。如果您有数亿或数十亿行,那么hbase是一个很好的候选者。如果您只有几千行/百万行,那么使用传统的rdbms可能是更好的选择,因为您的所有数据都可能在单个节点(或两个)上结束,而集群的其余部分可能处于空闲状态。第二,确保没有rdbms提供的所有额外功能(例如,类型化列、辅助索引、事务、高级查询语言等)也可以生存。例如,根据rdbms构建的应用程序不能通过简单地更改jdbc驱动程序“移植”到hbase。考虑将rdbms迁移到hbase作为一个完全的重新设计,而不是端口。第三,确保你有足够的硬件。即使是hdfs也不能很好地处理少于5个datanode的数据(这是由于hdfs的block replication(缺省值为3)和namenode。hbase可以在笔记本电脑上独立运行,但这只应视为一种开发配置。”https://hbase.apache.org/book.html
3条答案
按热度按时间7qhs6swi1#
这是一个很难回答的问题,有很多事情要考虑。
你能优化你的关系数据库吗?添加索引,对代价太大的连接进行非规范化。。。有很多路要考虑,我不是Maven。
你的数据大吗?这是非常模糊的,在rdbms和大数据之间有一个空间,你不能确定使用哪一个。rdbms仍然可以有效地处理数百万行。
你的数据需要关联吗?nosql数据库不使用关系,这对sql背景的人来说可能很难做到。有一些框架将sql提供给hbase,但一般来说,在使用大数据时使用rdbms模型是个坏主意
如果你能回答这些问题,并且你认为nosql是一种训练,那么问问你的团队他们对此有何看法。nosql数据库带来了在sql世界中永远不会遇到的问题。他们应该首先建立一个原型来了解所有这些是如何工作的,也许可以为他们提供一些培训。
总而言之:
-查找是否需要非关系数据库
-选择正确的一个(hbase真的是你需要的吗?为什么不考虑cassandra或mongodb?)
0g0grzrc2#
我最喜欢的一本书描述了。。
说到@whitefret的最后一点:有一种叫做cap-theorm的东西可以用来做决定。
一致性(所有节点在同一时间看到相同的数据)
可用性(每个请求都会收到一个关于它是成功还是失败的响应)
分区容差(尽管由于网络故障而进行了任意分区,系统仍能继续运行)
在这种情况下,hbase支持cp
但是,要将rdbms切换到hbase,可以使用sqoop。
aor9mmx13#
像所有nosqldb一样,hbase提供了很多新特性,但遗憾的是,没有什么是免费的(甚至没有提到钱的成本)。
在hbase中,您真的应该检查您可能想要执行的所有查询是否都可以用hbase数据模型填充。需要考虑的一个重要问题是模式设计(最重要的是rowkey的模型化)。我建议你读一读这篇非常好的论文:
http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/9353-login1210_khurana.pdf
我认为在hbase官方网站上可以找到对你问题的一个很好的答案。
“hbase并非适用于所有问题。
首先,确保你有足够的数据。如果您有数亿或数十亿行,那么hbase是一个很好的候选者。如果您只有几千行/百万行,那么使用传统的rdbms可能是更好的选择,因为您的所有数据都可能在单个节点(或两个)上结束,而集群的其余部分可能处于空闲状态。
第二,确保没有rdbms提供的所有额外功能(例如,类型化列、辅助索引、事务、高级查询语言等)也可以生存。例如,根据rdbms构建的应用程序不能通过简单地更改jdbc驱动程序“移植”到hbase。考虑将rdbms迁移到hbase作为一个完全的重新设计,而不是端口。
第三,确保你有足够的硬件。即使是hdfs也不能很好地处理少于5个datanode的数据(这是由于hdfs的block replication(缺省值为3)和namenode。
hbase可以在笔记本电脑上独立运行,但这只应视为一种开发配置。”
https://hbase.apache.org/book.html