4

作为我大学课程的一部分,我最终完成了一个真正的项目,该项目旨在帮助公司从关系数据仓库转变为NoSQL数据仓库。问题在于,他们在大型工作中寻找的是更好的性能,但到目前为止,他们已经使用了一台机器,如果他们确实迁移到NoSQL,他们仍然希望继续使用单台机器出于成本原因。NoSQL在一台机器上

据我所知,NoSQL的重点是在一台大型的多台机器的分布式系统中运行它。所以我没有看到这个迁移的重点,特别是因为我非常确定(但不是完全),如果他们安装NoSQL,他们可能会以最差的性能结束。

但是我还是不舒服的告诉他们,因为我对这个领域还不熟悉(不到一个月),所以我想知道是否有任何情况在一台数据仓库的单台机器上使用NoSQL是合理的性能明智吗?或者这只是一个普通的坏主意?

+0

没有NoSQL这样的东西。只有很多新的数据库技术,它们的工作完全不同,彼此之间没有什么共同之处,而不是他们与SQL有共同之处。 – Philipp

+0

我完全了解NoSQL的含义,但从我所看到的情况来看,专注于分布式系统和可伸缩性似乎很常见,但有些图形数据库除外。我想知道是否有任何这些数据库被描述为不只是SQL,可以在我所描述的环境中提供更好的性能。 – user3323032

+0

环境并不重要。重要的是数据的结构。也许它可以更好地适应文档数据库,关键/值存储或图形数据库,但它也可以非常适合像现在这样的关系数据库。 – Philipp

回答

1

对于你的问题的答案,就像对这么多问题的回答一样,“这取决于”。

忽略了关于这个问题的评论,我认为你的客户的问题可能是合法的。关系数据库和非关系数据库最终都将数据保存在键值元组中,并使用索引等确保对数据的快速访问。不同之处在于,SQL /关系数据库包含大量开销,以尝试以最佳方式在给定未知的一组查询的情况下检索结果,并确保稳定的并发性。这种开销既计算昂贵又很少导致最佳解决方案。因此,对于简单的重复查询,SQL数据库通常执行速度要慢得多。

另一方面,No-sql数据库更像是一个“裸机”数据库,依靠程序员和智能设计取得成功。它们经过优化,能够非常快速地获取给定密钥的值,通常为亚毫秒。因此,增加对设计的前期投资可以实现卓越和接近最佳的性能。有必要确定进行这种前期设计的成本效益,但几乎可以保证,无论涉及多少台机器,no-sql方法的性能都会更好(事实上,SQL数据库非常困难或不可能聚集在一起,这也是开发NoSql的主要原因之一)。

最终,我们将看到在非sql平台上实现的类似于关系的解决方案。实际上,Mongo,Elasticsearch和Couchbase(可能还有其他)已经具有类似于SQL的查询功能。但现在,你正面临着这种困境。

1

对于单个机器,如果负载写入很重,例如你记录了很多你可以为卡桑德拉做的事情。另外一个很好的选择是hbase,但它很重,并且不建议单节点。如果他们在json中暴露api,您可以查看基于文档的dbs,如couchbase,mongo db。如果你有关于负载的想法,那么选择一个nosql数据存储容易得多

0

如果你处于一个你需要选择的位置,我认为你应该先看看MongoDB。如果你从来没有尝试过,我真的建议你访问他们的教程实时演示,并试试看。如果您愿意,请下载并按照其网站上的安装指南进行操作。它是免费的,在单台机器上运行良好,而且使用起来非常简单。

除了MongoDB,我还使用了Oracle,SQL Server,MySQL,SQLite和HBase。我知道Cassandra应该在列表中,但我没有尝试过。使用MongoDB,我在两个小时内完全部署并执行了应用程序的读写操作。我将其中的大部分内容归功于他们网站的简洁明了的教学内容。最大的学习曲线是弄清楚查询如何更新记录或删除记录而不删除整组相似记录。

关于NoSQL的VS RDBMS,一些需要考虑的要点:

  • 添加新列RDBMS表可以锁定数据库或其他
  • MongoDB的降低性能的方案较少,从而增加新的领域,不会影响旧文档,并且会立即生效(思考如此的灵活性 - 将任何维度的数据投入到系统中,而无需维护开销)
  • 当应用程序不太可能需要DBA来解决架构问题时变化
  • 我认为与表大小有关的问题是无关紧要的,所以您不会遇到扩展问题 - 只是单个机器上的磁盘空间问题
相关问题