NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手
让我假设我们的应用程序可以放弃JOIN以获得速度,在我们的例子中,这是一个可接受的权衡。我们说过,在许多NoSQL实现中,很难保持各种条目的一致性。当您在没有事务的情况下工作时,您可以按顺序执行许多操作,但过了一段时间后会出现不一致 这对于NoSQL的第一次实现是正确的,并且一些新技术试图给出事务。您还可以考虑在应用程序级别管理事务,尝试回滚脏数据,但在许多情况下可能很难管理。 缺少供应商技术的标准 SQL是一种标准语言。可能会有许多变化带来特定的方言,但这很复杂并不禁止抽象数据访问。想想Hibernate,NHibernate,Doctrine,Entity Framework或其他ORM。它们证明了SQL方言之间的区别并不重要。我们可以得出结论,即使许多供应商实现了不同的数据库技术,SQL也是一种标准语言。此外,如果您不是基于ORM层,如果您为DB生成查询,则大多数代码可以在其他代码中重用。这使迁移更容易,开发人员可以快速适应不同的DB解决方案。 另一方面,在NoSQL世界中,存在更多混乱。每个供应商实现其特定语法,而不涉及任何共享标准。这意味着在不同的NoSQL实现之间迁移应用程序更加困难。这意味着找到一个熟悉许多NoSQL技术的程序员更难。 架构灵活性可能是一个麻烦 NoSQL系统的一个特点是它们不需要架构。在实践中,程序员在保存数据时决定数据结构。因此,没有任何地方可以写出数据的结构以及数据的含义。即使您可以使用某种自动化工具轻松地从数据关系重新创建数据库模型,这可能是传统应用程序中缺少的。 而且,如果发生错误怎么办?我们知道可能存在代码出错的情况。传统的RDMS是脚手架,因此如果您切换某些字段或者您的字段格式错误,它们可以保护您免受不一致。在NoSQL的情况下,DB没有任何帮助,因为没有定义任何模式,没有任何关于数据的信息应该保存:没有人可以说数据是否错误。最糟糕的副作用是,该过程为开发人员带来了很多权力和很多责任,通常不了解所有流程或完整结构。 而且,即使你现在知道什么是保存的,你认为你会记得下个月的所有内容?和第二年?并非所有项目都需要持续开发,在我们需要进行一些更改之前,可能会有一个业务应用程序保持原样多年。 在IT部门,公司通常会将项目委托给某个供应商,因此必须考虑这一部分,以确保在项目结束时轻松移交,可能要求准确记录有关数据的结构以及每个字段/集合的含义。与模式灵活性相关的最后一个问题是团队中的每个成员都无法在项目中工作,因此,对于小团队来说,流量是至关重要的并非所有成员都对数据结构有完整的了解,或者没有足够的文档。 Analytics(分析) (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |