作为我大学课程的一部分,我最终得到了一个真正的项目,其中包括帮助公司从关系数据仓库转移到NoSQL数据仓库.问题是他们正在寻找的是在大型工作中获得更好的性能,但到目前为止他们使用的是一台机器,如果他们确实迁移到NoSQL,他们仍然希望继续使用一台机器来节省成本.
据我所知,NoSQL的重点是在几台机器的大型分布式系统中运行它.所以我没有看到这次迁移的重点,特别是因为我非常肯定(但并非完全)如果他们确实安装NoSQL,他们可能会以最差的性能结束.
但是我仍然不习惯告诉他们这个,因为我还是这个领域的新手(不到一个月),所以我想知道,是否有任何情况下在一台机器中使用NoSQL用于数据仓库是合理的性能明智的?或者这只是一个简单的坏主意?
最佳答案 你的问题的答案,就像许多问题的答案一样,是“它取决于”.
忽略对这个问题的评论,我认为你的客户的问题可能是合法的.关系数据库和非关系数据库最终都将数据保存在键值元组中,并使用索引等来确保快速,快速地访问数据.不同之处在于,SQL /关系数据库包含大量的开销,可以在给定未知查询集的情况下尝试检索结果的最佳方法,并确保稳定的并发性.这种开销在计算上都很昂贵,并且很少产生最佳解决方案.因此,对于简单的重复查询,SQL数据库的执行速度通常要慢得多.
另一方面,No-sql数据库更像是一个“简单”的数据库,依靠程序员和智能设计来取得成功.它们经过优化,可以非常快速地(通常是亚毫秒)检索给定键的值.因此,增加前期设计投资可实现卓越且接近最佳的性能.有必要确定执行此前期设计的成本效益,但无论所涉及的机器数量多少(事实上,SQL数据库非常困难或者非常困难),无论如何都可以保证no-sql方法的性能更好.不可能聚集在一起,是NoSql开发的主要原因之一).
最终,我们将看到在无sql平台上实现的类似关系的解决方案.实际上,Mongo,Elasticsearch和Couchbase(可能还有其他)已经具有类似SQL的查询功能.但是现在,你面临着这种困境.