`
zcw_java
  • 浏览: 303992 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

NO-SQL领域及简介

 
阅读更多
刚开始了解学习NO-SQL,四处找来一些资料

NoSQL,指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

使用NO-SQL理由
1、High performance - 对数据库高并发读写的需求
  web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求。

2、Huge Storage - 对海量数据的高效率存储和访问的需求
  对于大型的SNS网站,每天用户产生海量的用户动态,以国外的Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。

3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
  在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地

1、数据库事务一致性需求
  很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。

2、数据库的写实时性和读实时性需求
  对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性。

3、对复杂的SQL查询,特别是多表关联查询的需求
  任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

NoSQL与关系型数据库区别
关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

开源软件

Membase
  Membase 是 NoSQL 家族的一个新的重量级的成员。Membase是开源项目,源代码采用了Apache2.0的使用许可。该项目托管在GitHub.Source tarballs上,目前可以 下载beta版本的Linux二进制包。该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。
  Membase容易安装、操作,可以从单节点方便的扩展到集群,而且为memcached(有线协议的兼容性)实现了即插即用功能,在应用方面为开 发者和经营者提供了一个比较低的门槛。做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中 Memcached的部分基础代码被直接应用到了Membase服务器的前端。
  通过兼容多种编程语言和框架,Membase具备了很好的复用性。在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置 的告警信息。
  Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制。 另外,对存储的数据进行再分配仍然是必要的。
  这方面的一个有趣的特性是NoSQL解决方案所承诺的可预测的性能,类准确性的延迟和吞吐量。通过如下方式可以获得上面提到的特性:
  ◆ 自动将在线数据迁移到低延迟的存储介质的技术(内存,固态硬盘,磁盘)
  ◆ 可选的写操作一一异步,同步(基于复制,持久化)
  ◆ 反向通道再平衡[未来考虑支持]
  ◆ 多线程低锁争用
  ◆ 尽可能使用异步处理
  ◆ 自动实现重复数据删除
  ◆ 动态再平衡现有集群
  ◆ 通过把数据复制到多个集群单元和支持快速失败转移来提供系统的高可用性。
MongoDB
  MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
  主要功能特性:
  ◆ 面向集合存储,易存储对象类型的数据
  “面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。
  ◆ 模式自由
  模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
  ◆支持动态查询
  ◆支持完全索引,包含内部对象
  ◆支持查询
  ◆支持复制和故障恢复
  ◆使用高效的二进制数据存储,包括大型对象(如视频等)
  ◆自动处理碎片,以支持云计算层次的扩展性
  ◆支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
  ◆文件存储格式为BSON(一种JSON的扩展)
  BSON(Binary Serialized dOcument Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。
  ◆可通过网络访问
  MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
  MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。
Hypertable
  Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮 助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。
Apache Cassandra
  Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook目前在使用此系统。
  主要特性:
  ◆ 分布式
  ◆ 基于column的结构化
  ◆ 高伸展性
  Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能 是比较简单的事情,只管在群集里面添加节点就可以了。
  Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比 Dynomite(分布式的Key-Value存 储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。
  和其他数据库比较,其突出特点是:
  ◆ 模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部 署上。
  ◆ 真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
  ◆ 多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。
  ◆ 范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。
  ◆ 列表数据结构 :在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非常方便的。
  ◆ 分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。
分享到:
评论

相关推荐

    mongodb No-SQL 数据库

    MongoDB是一种流行的No-SQL数据库,它以快速简洁著称,并且在性能上远胜于传统的SQL Server Database。在美国,许多大型科技公司如谷歌和脸书都在使用MongoDB。No-SQL数据库,也被称为非关系型数据库,是近几年随着...

    第2节 Transact-SQL 语言基础.docx

    在数据库管理和编程领域,Transact-SQL (T-SQL) 是一种扩展了标准SQL的语言,由Microsoft开发,主要用于操作和管理Microsoft SQL Server数据库。T-SQL提供了更丰富的语法和功能,包括数据查询、数据更新、事务处理、...

    实验五-SQL语言.doc

    ### 实验五-SQL语言知识点解析 #### 一、实验目的与要求 1. **掌握SQL语言的查询功能**: - SQL(Structured Query Language)是一种用于管理关系型数据库的...这些实践技能对于数据库管理和数据分析等领域至关重要。

    SqlServer与Oracle差异

    在数据库领域,SqlServer和Oracle都是广泛使用的数据库管理系统,它们各自拥有独特的特性和优势。本文将从概念、数据类型、语法等方面对比两者的差异。 1. **概念上的区别** - Oracle是一种对象关系数据库管理系统...

    sqlserver2005-jdbc驱动、sqlserver2008-jdbc驱动、mysql-jdbc驱动、oracle驱动-

    在IT领域,数据库连接是应用程序与数据库之间交互的关键部分,而Java通过JDBC(Java Database Connectivity)提供了一种标准化的方式来实现这一目标。本压缩包包含了适用于不同数据库系统的JDBC驱动,包括sqlserver...

    SQL专家门诊源代码--分布式查询.rar

    在IT领域,数据库管理和优化是至关重要的环节,尤其是在大数据时代,分布式查询技术更是扮演着核心角色。本资源“SQL专家门诊源代码--分布式查询.rar”提供了深入理解和实践分布式查询的宝贵资料,尤其对于SQL开发者...

    SQL-Server2005

    SQL Server 2005是微软公司推出的一款关系型数据库管理系统,它在IT领域中扮演着重要的角色,尤其是在数据存储、管理和分析方面。本压缩包文件"SQL2005"可能包含了关于这个版本的详细信息,包括基本概念、功能特性、...

    sql2008自动备份

    在IT领域,数据库管理是至关重要的任务之一,而其中数据库的定期备份更是确保数据安全的重要环节。本篇文章将深入探讨如何在SQL Server 2008中设置自动备份,这对于数据库管理员以及对数据库操作有一定了解的初学者...

    数据库SQL Server 2000实验报告.pdf

    在创建过程中,定义了各种约束,如自动增长ID(identity)、非空字段(not null)、默认值(default)以及外键约束(foreign key),并设置了参照完整性和级联删除(on delete cascade/noaction)。 3. 在SPJ数据库...

    sql server数据库日志满的处理方法

    在IT领域,尤其是在数据库管理与维护中,SQL Server数据库日志满的问题是常见的技术挑战之一。这不仅影响数据库性能,还可能导致数据写入失败、事务处理中断等严重后果。因此,掌握有效的处理方法至关重要。根据给定...

    精彩编程与编程技巧-Microsoft SQL Server 7.0 - OLAP 相关问题...

    OLAP系统通常用于商业智能(BI)和数据分析领域,能够帮助用户进行深入的数据探索和洞察。SQL Server 7.0引入了对OLAP的支持,提供了强大的数据分析工具,包括多维数据集和数据挖掘功能。 #### 二、安装与配置OLAP...

    从SQLServer迁移大批量数据到Oracle

    在 IT 领域,数据库迁移是一项常见的任务,尤其是在企业级应用中。随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将详细介绍从 SQL Server 迁移大批量数据到 ...

    SQL server综合练习

    - 查询学生表中的学号(s_no)、班级号(class_no)、姓名(s_name)、性别(s_sex)及生日(s_birthday)。 - 语法结构为:`SELECT column_name(s) FROM table_name`。 - **知识点2:字段别名** - 使用AS关键字...

    sql2005自动备份

    BACKUP DATABASE [sq_test] TO DISK = @strPath WITH NOINIT, NOUNLOAD, NOSKIP, STATS = 10, NOFORMAT; ``` 4. 单击“确定”保存作业步骤。 ##### 步骤4:设置作业调度 1. 在“调度”页签下,点击“新建”来创建...

    互金数据库查询SQL.docx

    SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言,而这里提到的"互金数据库查询SQL.docx"可能是一个文档,其中包含了关于如何在互金领域使用SQL进行数据查询的例子或教程。 在描述中提到...

    一个从sql构建http API的无代码工具。只需要编写sql,然后自动生成http API。特别适合为报表开发后端服务.zip

    无代码(No-Code)意味着开发者无需编写传统的编程代码,只需专注于数据查询,从而提高了开发效率。 描述中的信息进一步强调了这个工具的适用场景,即主要用于报表开发的后端服务。报表开发通常涉及从数据库中提取...

    WINCC读写SQL数据库的例子

    在工业自动化领域,SIMATIC WinCC是西门子推出的一款人机界面(HMI)软件,用于监控和数据采集。本文将深入探讨如何利用WinCC与SQL数据库进行交互,包括读取和写入数据,以实现更高效的数据管理和分析。我们将结合...

    SQL Server依然是数据库市场上的No.1

    而Sybase尽管在某些领域(如金融)保持其地位,但也面临压力,需要更新功能以保持竞争力,否则可能被用户转向其他更具吸引力的解决方案,比如MySQL。 综上所述,SQL Server凭借其易用性、与开发环境的集成以及在...

Global site tag (gtag.js) - Google Analytics