我有一个在Java堆栈(Struts 2 + Spring +
Hibernate)上运行的Web应用程序,并在MySQL中保持不变。我查看了NoSQL数据库,它们肯定比RDBMS更容易推理和使用。这是一个音乐流应用程序,用于存储艺术家信息并允许用户保存播放列表。
我想知道切换到NoSQL
DB(CouchDB,MongoDB,Cassandra)是否有任何优势(性能,硬件成本,简化代码,可伸缩性)。切换到NoSQL数据库会带来什么损失/收益?
请指教。
对“ NoSQL”的客气解释已经成为Not Only SQL
。如果您确实具有真正的关系数据,或者您的功能取决于联接和ACIDity之类的数据,则应以关系方式存储该数据。在本文中,我将解释如何与 两个
NoSQL数据存储区一起使用MySQL 。现代的Web规模的数据存储都是关于了解如何为工作选择最佳工具的。
就是说,NoSQL确实是对以下事实的一种反应:关系方法和思维方式已应用于实际上并不十分适合的问题(通常是具有数千万行或更多行的大型表)。一旦表拿到大,典型的SQL“最佳实践”一直是手工
分片 数据-
即在表B中把记录1至10,000,000表A,10000001通过20000001,等等。然后,通常在应用程序模型层中,根据此方案执行查找。这就是所谓的application- aware
缩放。这是耗时且容易出错的方法,但是在为长表存储维护MySQL的同时扩大规模时,它已成为或多或少的标准MO。对我来说,NoSQL代表了application- unaware
替代方案。
核心价值
当我的MySQL原型开始变得太大而无法满足自己的需要时,我个人将尽可能多的数据转移到了快如闪电的Membase上,该性能优于Memcached并增加了持久性。Membase是一个分布式键值存储,可通过向集群中添加更多商品服务器来线性地扩展(或多或少进行线性扩展(例如,Zynga使用它来每秒处理50万次操作)),因此
非常
适合云时代的亚马逊EC2,Joyent的等
众所周知,分布式键值存储是获得巨大的线性规模的最佳方法。键值的弱点是可查询性和索引编制。但是,即使在关系世界中,可伸缩性的最佳实践是将尽可能多的精力转移到应用程序服务器上,在商品应用程序服务器上的内存中进行联接,而不是要求中央RDB集群处理所有这些逻辑。由于simple select
plus application logic
确实是 即使在 MySQL上 也
可以实现大规模扩展的最佳方法,因此向类似Membase(或其竞争对手Riak)的过渡并不是很糟糕。
文件存储
有时-尽管我的争论不如很多人想像的那样-应用程序的设计固有地需要二级索引,范围可查询性等。NoSQL的方法是通过document store
类似MongoDB的方法。与Membase一样,Mongo在关系数据库特别薄弱的某些领域(例如application- unaware
扩展auto-sharding
和)非常好maintaining flat response times even as dataset size balloons
。它比Membase慢得多,并且在进行纯水平缩放时会比较棘手,但是好处是它具有很高的可查询性。您可以实时查询参数和范围,也可以使用Map
/ Reduce对真正庞大的数据集执行复杂的批处理操作。
在我上面提到的同一项目中,该项目使用Membase提供大量实时播放器数据,我们使用MongoDB存储分析/指标数据,这正是MongoDB的亮点。
为什么要在SQL中保留内容
我简短地谈到了“真正的关系”信息应保留在关系数据库中的事实。正如评论员Dan
K.指出的那样,我错过了讨论离开RDBMS或至少完全离开RDBMS的缺点的部分。
首先,有SQL本身。 SQL是众所周知的,并且长期以来一直是行业标准。诸如Google的App
Engine数据存储区(在Big Table上构建)之类的某些“
NoSQL”数据库实现了它们自己的类似SQL的语言(Google的名字叫GQL,简称GQL Google Query Language
)。MongoDB通过其令人愉悦的JSON查询对象对查询问题采取了一种全新的方法。尽管如此,SQL本身还是从数据中获取信息的强大工具,而数据通常是数据库的出发点。
保留RDBMS的最重要原因是ACID或Atomicity, Consistency, Isolation, Durability
。我不会重新哈希Acid-
NoSQL的状态,因为在SO上的这篇文章中已经很好地解决了它的问题。可以这么说,Oracle的RDBMS拥有如此庞大的市场,这是无可厚非的,这是有道理的:
某些数据需要纯ACID合规性
。如果您的数据可以(如果可以,那么您可能很清楚这一事实),那么数据库也可以。保持低pH值!
本文向大家介绍NoSQL数据库,包括了NoSQL数据库的使用技巧和注意事项,需要的朋友参考一下 这些用于大型分布式数据集。关系数据库可以有效地处理一些大数据性能问题,而NoSQL数据库可以轻松解决此类问题。在分析可能存储在云的多个虚拟服务器上的大型非结构化数据时,非常有效。
本文向大家介绍初识NoSQL NoSql数据库入门 NoSql数据库基础知识,包括了初识NoSQL NoSql数据库入门 NoSql数据库基础知识的使用技巧和注意事项,需要的朋友参考一下 做了一年的大一年度项目了,对于关系型数据库结构还是有些了解了,有的时候还是觉得这种二维表不是很顺手。在看过一篇文章之后,对NoSQL有了初步的了解,(https://keen.io/blog/5395834921
NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD
随着越来越多的数据变为非结构化或半结构化,通过NoSql数据库管理它们的需求也在增加。 Python也可以与与Relational数据库交互的方式类似地与NoSQL数据库交互。 在本章中,我们将使用python与MongoDB作为NoSQL数据库进行交互。 为了连接到MongoDB,python使用一个名为pymongo的库。 您可以使用Anaconda环境中的以下命令将此库添加到python环境
问题内容: 我是一名WordPress设计人员/开发人员,尽管在某些项目中确实使用SVN,但他越来越多地参与使用版本控制,尤其是Git。我当前正在将Beanstalk用于我的远程仓库。 将所有WordPress文件添加到我的仓库中都没问题,如果我想知道可以.gitignore wp- config文件,但是由于我是目前唯一的开发人员,而且这些项目都是封闭源代码,所以的确一点意义。 就像任何CMS一
有时候数据以关系格式不可用,我们需要在NoSQL数据库的帮助下保持事务性。 在本章中,我们将重点介绍NoSQL的数据流。 我们还将通过敏捷和数据科学的结合来了解它的运作方式。 使用NoSQL敏捷的主要原因之一是在市场竞争中提高速度。 以下原因显示NoSQL如何最适合敏捷软件方法 - 更少的障碍 改变模型,即使在敏捷开发的情况下,目前正在经历中流也会产生一些实际成本。 使用NoSQL,用户使用聚合数