如何恰当使用SQL和NoSQL ?
《如何恰当使用SQL和NoSQL ?》要点: 随着大数据的热潮,非关系型数据库NoSQL在近两年也受到了更多人的关注,有人还提出NoSQL将主导未来的大数据分析领域.而事实上,SQL与NoSQL之间其实就是互补的关系,未来双方在大数据和云计算时代都将会有很大的发展空间. 概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). NoSQL(Not Only SQL)泛指非关系型数据库.主要代表:MongoDB,Redis,CouchDB. SQL 数据库: 在表中存储相关联的数据 在使用之前需要定义表的一个模式 鼓励标准化减少数据冗余 支持从多个表中检索相关数据表连接在一个单一的命令 实现数据完整性规则 提供事务使两个或两个以上的成功或失败的数据更改作为一个原子单元 可以扩展(有一些努力) 使用一个强声明性语言查询 提供足够的支持,专业技能和工具. NoSQL 数据库 将相关联的数据存储在类似 JSON 格式,名称-值 可以保存没有指定格式的数据 通常必须规范化,所以一个项目的信息包含在一个文档里 应该不需要连接(假设使用规范化的文档) 允许任何数据被保存在任何时候任何地方,不需要验证 保证更新一个文档 – 但不是多个文档 提供出色的性能和可伸缩性 使用 JSON 数据对象查询 是一个新的、令人兴奋的技术. SQL和NoSQL之间的区别 SQL的独特优势包括: 1. SQL能够加强与数据的交互,并允许对单个数据库设计提出问题.这是很关键的特征,因为无法交互的数据基本上是没用的,并且,增强的交互性能够带来新的见解、新的问题和更有意义的未来交互. 2. SQL是标准化的,使用户能够跨系统运用他们的知识,并对第三方附件和工具提供支持. 3. SQL能够扩展,并且是多功能和经过时间验证的,这能够解决从快写为主导的传输到扫描密集型深入分析等问题. 4. SQL对数据呈现和存储采用正交形式,一些SQL系统支持JSON和其他结构化对象格式,比NoSQL具有更好的性能和更多功能. NoSQL特点: 易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性.数据之间无关系,这样就非常容易扩展.也无形之间,在架构的层面上带来了可扩展的能力. 大数据量,高性能 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀.这得益于它的无关系性,数据库的结构简单.NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了. 灵活的数据模型 NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式.而在关系数据库里,增删字段是一件非常麻烦的事情.如果是非常大数据量的表,增加字段简直就是一个噩梦.这点在大数据量的web2.0时代尤其明显. 高可用 NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构.比如Cassandra,HBase模型,通过复制模型也能实现高可用. 总结 SQL和NoSQL水火不容的想法是错误的,理由并不仅仅是因为很多公司都选择同时使用它们.就像我以前讨论过的所有技术一样,世上真的没有那种“万金油”的办法,要根据用例来选择恰当的技术.如果你的数据需求在迅速变化,就需要高通量来应对快速的增长,如果你的数据在大幅增长,就需要快速且有效的扩展性,NoSQL可能会适合你.但如果你的数据结构没有变化,增长速度适中可控,那么SQL技术可能最适合你.毫无疑问,SQL还没有消亡. 《如何恰当使用SQL和NoSQL ?》是否对您有启发,欢迎查看更多与《如何恰当使用SQL和NoSQL ?》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |