我们在当前的MySQL数据库中面临与性能相关的问题。我们的应用程序在几张桌子上非常沉重~20。我们在这个表上运行了很多聚合查询以及写入。我们的大多数团队都是开发人员,我们无法访问dba,这可能有助于重新调整我们当前的数据库并使工作更快。
转移到NoSql是一种选择。但是认真思考
方面的更高限制是什么出现问题
HBase似乎很适合分析应用。
想要获得一些关于RDBMS限制的指导,可以考虑转移到NoSQL
答案 0 :(得分:0)
这是一个如此广泛的话题,所以不要相信有任何“正确”的答案,但也许一些一般性建议会有所帮助:
我认为你应该在选择正确的问题工具方面考虑这一挑战。所有数据库都有其优点和缺点,在一些挑战中,最好的方法是使用entire toolbox来完成工作。
请注意,将数据(甚至只是部分数据)移动到不同的数据存储区很少是非常重要的工作。在实施之前,请利用这个机会重新考虑您的数据模型。
完成这项工作还应考虑更多要求,例如您的增长计划。它看起来你正处于这个十字路口,因为你原来的假设 - >选择不再与现实相提并论。如果你想在下次你在同一个地方时延迟,你应该利用这个机会这样做。
最后请记住,只有在对所有捕获的数据执行某些操作后才能完成作业 - 否则我建议您使用无限可扩展的写入/ dev / null设计模式;)换句话说,除非您的数据是只写的,否则您需要确保您选择的任何SQL / NoSQL / NewSQL /其他数据存储区也可以在您的用例可接受的时间范围内获取数据/信息/知识。
答案 1 :(得分:0)
这可能是值得的鉴于您目前的基础设施,但请记住这将是一项艰巨的任务,因为您'需要重新设计整个过程。 HBase可以帮助你,因为它有一些简洁的功能,比如实时计数器(在某些情况下可以消除定期汇总的需要),或者每个客户端缓冲(可以让你扩展到每秒大于100k的写入速度),但是,请注意它不能像查询关系数据库那样查询,因此,您需要仔细规划它以使其适用于您。
似乎您的主要问题是原始数据写入,当然,您绝对可以依赖HBase,然后每X分钟进行一次汇总以将数据存储在RDBMS中,以便像往常一样查询。但是考虑到你每分钟都在做这些,这是一个非常短暂的差距,你为什么不把数据保存在内存中并每分钟将它刷新到卷起的表中?当然,你可能会丢失数据,但我不知道批评者是如何丢失一分钟的数据,而这一点可以帮助你。
无论如何,我能想到的最好的建议是:读一本书,了解HBase如何首先运作,深入了解专业知识。缺点,并考虑它如何适合您的具体需要。这是至关重要的,因为良好的实施将决定它是成功还是彻底失败。
一些资源: