|
本帖最后由 guoyJoe 于 2013-5-3 16:59 编辑
1、适合nosql数据库的场景有哪些?
•复杂事物,如果你不能承受数据丢失的风险或者你想要一个简单的事务编程模型可以选择关系数据库和网格数据库。
•扩展性,NoSQL或SQL皆可,目标产品要支持水平扩展、分区、在线增减硬件、负载均衡、自动分片、数据平衡和容错等特性。
•追求高可用性,可用Bigtable类型的等支持最终一致性的数据库。
•需要处理长期的快速读写,可以看看文档数据库,Key-value数据库或者内存数据库,还可以考虑SSD。
•要实现社会化网络,第一选择应该是图数据库。其次像Riak这样支持关系的数据库也可以。一个支持简单SQL join操作的内存关
系数据库能够处理数据量不大的情况。Redis’ set 和list 操作就是这样。
•需要不同的访问方式和数据类型的话可以看看文档数据库,它们在这方面很灵活。
•大数据量的离线分析首先应该考虑Hadoop,其次是其他支持MapReduce的产品。当然,支持MapReduce与擅长MapReduce处理不是
一回事。
•如需跨越多个数据中心,可选用基于Bigtable模型的产品,或其分布式的,能解决延迟问题,分区容错性问题的产品
•CRUD类型的应用可以考虑文档数据库,这样不需要join就可访问复杂的数据结构。
•搜索可以考虑Riak。
•需要lists, sets, queues, publish-subscribe等数据结构的话,可以考虑Redis,它的分布式锁等特性也非常有用。
•编程友好,如果要使用JSON, HTTP, REST, Javascript等程序员喜闻乐见的数据类型,第一选择就是文档数据库和Key-value数
据库。
•用于实时事务处理的物化视图,可以考虑VoltDB,非常适合于快速处理大量事务。
•企业级支持及服务级协议 ,可以寻找市场上以此为卖点的产品,如Membase。
•要记录连续的大量数据,又对一致性无太高要求,可以看看Bigtable类型数据库,因为它工作在分布式文件系统上,可以处理大
规模的写入请求。
•需要尽可能使用简单,请考虑PAAS方案,用这种方案你自己几乎不需要做什么。
•如果你的产品要卖给企业客户请考虑关系数据库,因为他们习惯于关系数据库。
•要动态构建对象间的关系,对象的属性能够动态加减,可以考虑图数据库,因为它不需要schema,可以在代码中随需建模。
•要支持大影音文件,可以看看像S3这样的存储服务。NoSQL不适于存储BLOBS,尽管MongoDB也提供了文件服务。
•要快速批量上传大量数据,得寻找支持这种场景的产品。但是大多数产品都不支持批量操作。
•易于变化,要选择支持动态schema的文档数据库和 Key-value数据库。它支持可选域,不需要修改schema即可增加、减少域。
•为了支持完整性约束,选择支持SQL DDL的数据库,可以在存储过程或者应用代码中实现。
•深度连接用图数据库,它支持实体键间的快速定位。
•为了让计算靠近数据,减少数据在网络中传送的开销,可以考虑存储过程。关系数据库,网个数据库,文档数据库和Key-value
数据库都支持存储过程。
•要存储BLOB数据,可选择Key-value数据库。它可以存储网页或者复杂对象,后者在关系数据库中要用join才能获取,代价高昂
。还可以降低延迟。
•选择一个经过验证的成熟产品,在处理扩展性问题的时候的时候选择通用的方案(纵向扩展、调优、缓存、数据分片、反范式等
等)
•多变的数据类型,数据不规整,列数不固定,复杂的数据结构等,考虑文档数据库,Key-value数据库,和Bigtable型数据库。
它们的数据类型都比较灵活。
•需要快速的关系查询,但是又不想自己实现,那么就选择支持SQL的数据库。
•能够在云中操作,自动利用云的一切特性和好处,目前还没有这样的东西。
•支持二级索引,通过不同的键来检索,可以考虑关系数据库和 Cassandra,后者新增了对二级索引的支持。
•规模不断增长(真正的大数据场景),但是访问不频繁的数据可以使用Bigtable类型的数据库,因为它的数据存储在一个分布式
文件系统上,很容易扩展 。
•要和其他服务集成,检查数据库是否提供某种写后同步功能,以便能够捕捉到数据库变化,通知其它系统,保证一致性。
•容错性,检查在停电、分区故障以及其他故障场景下写操作是否能够成功。
•如果只是为了推动某个方向上的技术创新,似乎没有现成的东西能够达到这个目的,你得自己去创造一个新的。这可不是件容易
事。
•移动平台上可以用CouchDB/Mobile couchbase.
2、nosql数据库与newsql数据库的区别?
NoSQL"是对各种新型、可扩展、高性能的SQL数据库厂商的简称。这些NewSQL厂商都致力于开发新的数据库产品和服务,以使得关
系模型在分布式架构下继续发扬光大,或者将关系数据的性能提升到不必进行横向扩展的程度。
NoSQL数据库,旨在满足分布式架构下的可扩展的要求,和/或无模式数据的管理要求。
NewSQL数据库,旨在满足分布式架构的要求,或将性能提升到不必进行横向扩展的程度。
同时,我们已经注意到了NoSQL没落的开始,由于重点被转移到特定的用户实例上了,正如我们所期望的那样,NoSQL和NewSQL之
间的分界线越来越模糊,两者的区分也变得无关紧要。
3、图存数据库的应用场景有哪些?
(1)要实现社会化网络,第一选择应该是图数据库。其次像Riak这样支持关系的数据库也可以。一个支持简单SQL join操作的内存
关系数据库能够处理数据量不大的情况。Redis’ set 和list 操作就是这样。
(2)要动态构建对象间的关系,对象的属性能够动态加减,可以考虑图数据库,因为它不需要schema,可以在代码中随需建模。3:
深度连接用图数据库,它支持实体键间的快速定位。
4、你认为 NoSQL数据库主要优缺点有哪些?
优缺点在优势方面,主要体现在下面这三点:
(1) 简单的扩展
(2)快速的读写
(3)低廉的成本:
这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的License成本;但瑕不掩瑜,NoSQL数据库还存在着很
多的不足,常见主要有下面这几个:
(1)不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本;
(2)支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL数据库都不支持事务,也不像MS SQL Server和Oracle
那样能提供各种附加功能,比如BI和报表等;
(3)现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语;上面NoSQL产品的优缺点都是
些比较共通的,在实际情况下,每个产品都会根据自己所遵从的数据模型和CAP理念而有所不同。
5、你如何看待NOSQL的安全性?
现阶段,虽然用户未必会对NoSQL的安全性给予足够关注,但是相信随着NoSQL应用的深入,在真正发生了一些安全事故之后,他
们会希望有更多的安全功能会内置在NoSQL数据库管理系统中。
从现在NoSQL的应用情况看,绝大部分数据库并不是面向公众基础设施的一部分。比如:不会用它保存设计公民、法人的人事信息
、金融交易信息和社保资料等,这些应用采用NoSQL数据库保存的数据安全性相对并不是那么重要。但在多数情况下,NoSQL数据库
并不仅限于使用在封闭的内部环境中。有安全界的专业人士建议,如果NoSQL是前置的,用户可以通过关注如特定的应用和基础设
施,从而提供额外的安全性。
用户必须意识到,NoSQL还并不成熟。让NoSQL数据库在短期内达到关系型数据库通过20年才建立起来的安全性并不现实。但是网络
的世界总是不乏偷盗者和破坏者,如果他们发现了可以利用的漏洞,是绝不会放过的。
我们看到,一些NoSQL数据库厂商正在就此进行尝试。MongoDB的供应商10Gen、CouchDB等厂家已经就产品部署周期内的安全性保障
展开了实际的行动。另外,并不是所有的NoSQL数据库的安全级别都是相同的,一些产品的安全性取决于用户所使用的代码语言。
而由于大多数NoSQL数据库是开源,用户能够自行查看安全威胁到底位于何处。
6、说说读完试读章节后您的感想。
非常强大!大数据之必备!
|
|