王楠w_n 发表于 2015-11-26 18:19

SQL vs NoSQL:如何选择?


获奖详情:http://bbs.chinaunix.net/thread-4235351-1-1.html

话题背景:

•VoltDB公司首席技术官Ryan Betts表示,SQL已经赢得了大型企业的广泛部署,大数据是它可以支持的另一个领域。
•Couchbase公司首席执行官Bob Wiederhold表示,NoSQL是可行的选择,并且从很多方面来看,它是大数据的最佳选择,特别是涉及到可扩展性时。
SQL 数据库是一个理想的项目,确定好了需求和健壮的数据的完整性是至关重要的。NoSQL 数据库是无关理想,不确定的或者不断变化的数据需求 ,在速度和可伸缩性上更重要。
那么,哪个会是更优的选择呢?


讨论话题:
1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?3.第一次发技术贴,如没有提到的问题,还请各位帮忙补充。

讨论时间:2015年11月26日—12月26日

奖品设置:活动结束后,我们将选取5位讨论精彩的同学,各送一本《SQL Server性能调优实战》。
http://images.china-pub.com/ebook4880001-4885000/4881445/zcover.jpg

作者:陈畅亮    吴一晴   
丛书名:数据库技术丛书
出版社:机械工业出版社
ISBN:9787111517023
上架时间:2015-10-22
开本:16开
版次:1-1

内容简介:
书中首先简要介绍了SQL Server与性能实践相关的一些基础语法及配置信息.提出与数据库性能相关的几个概要信息,再根据SQL Server数据的内部实现原理讲解如何调整和优化SQL Server数据库实例的配置;接着介绍SQL Server数据库存储引擎的语句优化,执行计划内部原理以及索引等综合因囊分析如何优化数据库语句,保证数据库的稳定性及效率;最后从SQL Server的数据库性能监控及高可用性解决方案,提出性能监控及设计层面的优化。


样章试读:




niao5929 发表于 2015-11-26 18:36

我还是那观点,没有绝对的好;比如当年精简指令集和复杂指令集的争执,现代cpu其实是这两者的合集,随着更成熟的技术工艺,以后很难区分到底是哪个更有优势;数据库也会有其自身的技术进化路线和方向,目前看来传统的数据库很难被替换掉,但新的需求也会让那种nosql继续发展,而且我个人认为新的nosql 只有以某种方式继承了sql 的应用需求,那么sql 才会溶进nosql 中,或者彼此融合产生一种新的数据库。技术的进化总是这样,总有一段新旧相互渗透的历史,不过我觉得真正的生命力还是源于自由开放的环境。

lyhabc 发表于 2015-11-26 20:01

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
没有标准,选择太多
2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
sql和nosql两者应用场景不一样,有时候真的很难直接比较
3.第一次发技术贴,如没有提到的问题,还请各位帮忙补充。
最近在弄mongodb,觉得mongodb的应用场景跟sql有区别,所以很难说mongodb的优点或缺点
当遇到适合nosql的场景,那么sql肯定会差一点
当遇到适合sql的场景,那么nosql肯定会差一点

个人见解,没有一定哪个可以绝对取代哪个,以前以为nosql是多余的,当使用上nosql之后,发现确实有一些场景需要nosql

hellioncu 发表于 2015-11-27 09:29

又不矛盾,两个同时用

jieforest 发表于 2015-11-27 09:36

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL和NoSQL以外,更有效的数据库。)
单纯谈数据库的并发写入性能实际上意义不大。
从单机性能来判断,各种关系数据库和各种NoSQL数据库都部署在单服务器的情况,并发写入性能最好的肯定是内存型数据库,因为其写入数据库就是写入内存,而不是写入磁盘,速度显然极快。
典型的代表包括:
1)Redis:开源内存键值NoSQL数据库
2)FastDB:开源内存实时关系数据库
3)Memcached:开源分布式内存对象缓存系统(可视为键值型NoSQL数据库)
4)MemSQL:开源内存关系数据库
5)H2:开源内存关系数据库
6)TimesTen:Oracle公司商业级的内存关系数据库
7)eXtremeDB:McObject公司商业级的内存关系数据库
8)Altibase:Altibase公司商业级的内存关系数据库
......

2.若同时应用SQL和NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
关系数据库和NoSQL数据库各有其适用的应用场景,混合适用可以充分发挥两者的优点。
比如,假设网页上有一个经常变化的TOP 10排名列表,对于这个数据的存储,在面对海量用户的场景下,选择关系数据库显然不怎么适合,而选择Redis之类的内存键值数据库来存储就很合适,集群也易于实现。
关系数据库同样有很多NoSQL数据库不可取代的优点。关系模型是万事万物之间一种随处可见的、广泛存在的现象的抽象,具有很强的适用性。对于业务开发,如果业务之间的联系是关系模型,那么用关系数据库是很适合的。

nail78 发表于 2015-11-27 10:24

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
应用场景不一样,简单的比较是没有太大意义的。选择合适的方案处理合适的场景,最适用的就是最好的。

关系数据库就不多说了,是通用的解决方案。

頻繁的写入操作,相对较少的读取信息的操作(如网站访问计数器),应该使用基于内存的key/value存储系统(如redis),或者是具备本地更新特性的文档存储系统(如MongoDB)

海量数据(如数据仓库需要分析的数据)适合存储在结构松散,分布式的文件系统中,如Hadoop

存储二进制文件(如mp3或pdf文档)并能直接为用户提供下载功能,可以使用Amazon S3

临时性的数据(如网站的session,缓存HTML页面信息等)适合存储在Memcache中

如果希望数据具备高可用性,并能够将数据的丢失的风险降到最低,同时整个系统具备线性扩展能力,可以考虑Cassandra和HBase

2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?

根据业务场景选择合适的方案,SQL和NoSQL都可以选择,举个例子,一个网站可能用到多种数据库:
MySQL可以用存储敏感的数据,比如用户的资料,交易的信息等
MongoDB用于存储大量的,相对不敏感的数据,如博客文章的内容,文章的访问次数等
Amazon S3用于存储用户上传的文档,图片,音乐等数据
Memcache用于存储临时性的信息,比如缓存HTML页面信息
我们不要把眼光局限在某一产品上,最适用的才是最好的。

stay_sun 发表于 2015-11-27 10:59

回复 1# 王楠w_n


    1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
对于数据库来说,主要看业务的需求
如果你需要批量的写入 你就需要非关系型数据库nosql 例如 mogodb hbase
如果你对一直性的要求高 你就选择 关系型数据库oracle
如果你的是网页累的操作 需要一致性,但是可以丢失一点的话 你可以选择mysql postgressql
如果你数据不重要 但是读特别多你就需要内存数据库 redis memcache等
其实数据库没有好坏只有适合当你选择数据库的时候看你的业务

2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
其实现在对比sql nosql 的文章特别多看下就可以了
cap理论目前中国的技术实力还没有打破当写把扩展性能提升上去你必然需要损失你的一致性。
so看业务吧   你的数据可以少部分的丢失的时候你才是选择 nosql 产品的时候
其实数据库产品特别多当你了解数据库产品的时候   才是去选择产品的时候
3.第一次发技术贴,如没有提到的问题,还请各位帮忙补充。
支持楠妹子   

laputa73 发表于 2015-11-28 11:17

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
单以并发写入而论,肯定是nosql胜出。
基本所有的nosql都实现了事件驱动的接口,适合高并发
而mysql.pg,oracle这些还停留在传统的进程,线程接口。
不过,一般应用的高性能写入,都会考虑到连接池/缓存+批量写的策略,并发不会在数据库这个环节解决。


2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
引入nosql.无疑会增加系统的复杂度。优点是适合分布式扩展。
nosql无法解决复杂的业务逻辑还是硬伤,难以独挡一面,还是需要配合sql使用。

现在前端技术mvc转向mvvm.尤其适合插入nosql,实现前后端读写分离。
前端nginx_lua+redis或者php等+redis。 解决数据高性能动态更新.web框架可以变得很轻量。因为没有了业务逻辑。
   后端处理可以用mysql,pg等。 解决数据生成的复杂逻辑。

在大数据分析领域,sql和nosql各有千秋。估计会趋于统一。



ps.话说voltdb,自从不免费了。。。关注度就大不如前了。。。

hiyachen 发表于 2015-11-28 17:19

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
3.第一次发技术贴,如没有提到的问题,还请各位帮忙补充。

heguangwu 发表于 2015-11-28 20:19

1.数据库并发写入性能方面,哪个是最优的选择?(可举例说明,也可除SQL 和NoSQL以外,更有效的数据库。)
   说句实话,并发写入并不是SQL和NoSQL的比较,抛开存储介质方面的优化,就磁盘数据库而言,这类比较更多的是存储引擎的比较,比如LSM之类的存储引擎对插入的性能就比较好,类似数据库的堆表,而索引组织表干这个或就比较费劲,NoSQL和SQL其实都是相互借鉴,同时舍弃部分特性,只有舍才会有得,没有一个数据库能包打天下,而是看场景看业务模型。

2.若同时应用SQL 和 NoSQL同时应用两者在网页应用程序的扩展性方面能带来哪些好处?
这个问题没怎么看懂,我的理解的网页展示方面的复杂逻辑嵌套非结构化数据用NoSQL保存比较好,而SQL适合有(跨行)事务的场景,同时要求数据不会特别大并且结构比较清晰。

3.第一次发技术贴,如没有提到的问题,还请各位帮忙补充。
其实NoSQL就是砍掉SQL中的复杂特性简化后
页: [1] 2
查看完整版本: SQL vs NoSQL:如何选择?