意见:使用NoSQL的原因

时间:2015-08-11 14:49:42

标签: database nosql

我从朋友那里得到了关于NoSQL的两点意见。

首先:使用NoSQL来提升性能并保存偶尔更新的数据。仍然使用sql来保存所有重要的dan交易数据。

第二:如果您真的不需要,请不要使用NoSQL。如果你确实保存了大数据,请使用它。

我使用NoSQL并且在选择数据时非常快。

我想知道,第一种观点是否足以实现NoSQL?大家怎么想这些?

注意:在我的情况下,它仍然可以很好地运行SQL。我想添加NoSQL来提高数据读取速度。所以它会一起工作。

这么早就使用NoSQL值得吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

这取决于你的设计。

根据我扩展数据收集的经验,我发现传统的关系存储在数据库变得非常大时无法在多个节点上扩展时成为瓶颈。当然它会扩大规模,但这在某些方面会变得成本过高。因此,在这种情况下,它将取决于您的中长期数据存储预测。因此,对我来说,解决方案是混合了可能经常更新的数据的关系存储,而没有用于数据的SQL(文档存储)具有快速增长的速度,通常在写入后不会更新。

需要考虑的事项:

查询

  

SQL关系存储支持不断增长的查询子集语言,以及各种过滤器,排序选项以及投影和索引查询。 NoSQL也做了这一切,但SQL通常可以超越它,允许强大的数据聚合,超出NoSQL的范围。

交易

  

事务很重要,因为它们可确保您对数据库进行原子更改。许多NoSQL平台不支持事务处理,因此在确定要使用的内容以及您自己的需求时请注意此功能。

一致性

  

MySQL平台通常使用单个主服务器来保证数据库的强一致性。它们使用同步复制来确保您不会丢失排队到主服务器的重要更改。相比之下,NoSQL在没有主服务器的情况下复制实体组,因此数据在实体组中很强大,并最终在所有组中进行更新。更好的选择取决于数据库的约束和需求。

的可扩展性

  

多年来,随着数据库负载的增加,数据库管理员依赖于扩展,购买更大的服务器。但是,随着交易率和对数据库的需求继续大幅增加,重点是扩大规模。扩展是跨多个主机分发数据库,​​这是NoSQL比标准SQL更好的东西。它们旨在最佳地用于扩展数据库。

管理

  

NoSQL数据库通常设计为总体上需要较少的管理。维修通常是自动的,数据分配和简单的数据模型有助于减少总体管理。但是,当出现问题时,您的支持也会减少。 SQL平台通常有供应商等待为企业提供支持。

模式

  

常规SQL平台通常严格执行模式更改规则,以避免用户创建的错误,这可能会在查询中出现错误。 NoSQL平台将有自己的机制来解决这个问题。

希望有所帮助。

答案 1 :(得分:1)

NoSQL在以下区域的SQL分数

  
      
  • 它支持半结构化数据和易失性数据。您可以随时更改结构

  •   
  • 它没有架构

  •   
  • 读/写通过非常高

  •   
  • 轻松实现水平可扩展性 - 添加更便宜的硬件并提供正确的复制因子

  •   
  • 将支持Bigdata的Terra Bytes& Peta Bytes使用更便宜的硬件

  •   
  • 对Bigdata之上的分析工具提供良好支持,尤其是Hadoop / Hbase系列

  •   
  • 内存缓存选项可用于提高查询性能

  •   
  • 开发人员更快的开发生命周期

  •   

何时不应使用NoSQL并使用SQL

  
      
  • 如果您需要与ACID属性进行关键业务交易,即一致性是关键的&最终的一致性不是一个选项

  •   
  • 如果您有大量聚合查询跨越多个实体

  •   

总之,您必须使用正确的技术来处理正确的业务用例。即SQL和NoSQL的组合

关于您的查询:

  1. 将SQL用于关键业务事务。如果您的SQL正在扩展以满足您的业务需求,请使用SQL。

  2. 将NoSQL用于大量Tera / Peta字节的大量数据,其中包含各种数据,其中SQL无法处理该数据量。品种。

答案 2 :(得分:0)

正如其他人所指出的那样,SQL和NoSQL(不仅仅是SQL)都有其优势。

经常有诱惑并排使用并最大限度地利用它。某事称为Polyglot persistence

这是个好主意吗?有时候是。

我应该这样做吗?
虽然它可能有好处,但权衡来自多个商店的维护(注意:它们将有不同的数据库管理方式) 如果您计划在同一个事务系统中使用数据同步,那么数据同步也会更大。 如果您要存储的数据(在sql和no-sql数据库中)可以在逻辑上分开,那么您可能没问题。但如果它们密切相关,那么你将很难保持它们的一致性。

总的来说,当我评估这个选项时,我得出的结论是,只有当你可以对数据进行逻辑分区时它才会起作用。另一个用例可能是使用Nosql for Analytics并继续使用sql进行事务系统。

回到你的用例,你是否在sql数据库中尝试了JSON存储。它可以在没有太多权衡的情况下为您带来性能优势。