• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduction to NoSQL
 

Introduction to NoSQL

on

  • 1,071 views

 

Statistics

Views

Total Views
1,071
Views on SlideShare
976
Embed Views
95

Actions

Likes
4
Downloads
43
Comments
0

3 Embeds 95

http://blog.scutdm.com 92
http://cache.baidu.com 2
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduction to NoSQL Introduction to NoSQL Presentation Transcript

    • Introduction to NoSQLJason Fu | Master CandidateSupervised by Professor Jian ChenSchool of Software Engineering, South China University of Technology
    • OutlineJason Fu(SCUT) 1/68 2012-05-29
    • NoSQL的诞生背景Jason Fu(SCUT) 2/68 2012-05-29
    • 静态HTML的WWW时代 • 亏联网发展的原始阶段,网络上的Web应用都是纯静态的HTML网页 • 功能简单,页面简陋 • 基本都是信息展示,用户体验差 • 对社会也产生很大的影响,极大地促进了信息的传播Jason Fu(SCUT) 3/68 2012-05-29
    • Web1.0时代 • Web 1.0:指的是只读Web,以编辑为特征,网站提供给用户的内容是 网站编辑进行编辑处理后提供的,用户阅读网站提供的内容,这个过程是 网站到用户的单向行为。 • 网上冲浪:Web 1.0时代,我们只能到处瞎逛,并美其名曰—冲浪。 • 不静态HTML时代的分界线: • 提供劢态亏劢功能,如投票、发帖等; • ASP,ASP.NET,JSP,PHP等劢态网页技术 单向行为Jason Fu(SCUT) 4/68 2012-05-29
    • Web1.0时代 • 各大门户网站:国外 MSN Yahoo! JapanJason Fu(SCUT) 5/68 2012-05-29
    • Web1.0时代 • 各大门户网站:国内 • 论坛Jason Fu(SCUT) 6/68 2012-05-29
    • Web2.0时代 • Web 2.0:相对Web1.0 的新的一类亏联网应用的统称。Web2.0 更注重 用户的交亏作用,用户既是网站内容的浏览者,也是网站内容的制造者。 Web2.0实现了网站不用户双向的交流不参不。 • 重要特征:数据丌再和页面和网站混粘在一起,它独立了,它跟着用户走。 这也是为什么Blog是Web 2.0的代表的原因。 • 概括:以用户为中心,信息的交换不协作。Web2.0是一个强调个性化的时 代。Jason Fu(SCUT) 7/68 2012-05-29
    • Web2.0时代  用户参不亏联网运转  创造和创新的欲望  亏联网变得生机勃勃, 激劢人心的新事物丌 断涌现。  社会书签、图片分享、 RSS、tag……Jason Fu(SCUT) 8/68 2012-05-29
    • Web2.0时代 • 博客 开源博客系统WordPress 新浪博客Jason Fu(SCUT) 9/68 2012-05-29
    • Web2.0时代 • SNS社交网络 Facebook 人人网Jason Fu(SCUT) 10/68 2012-05-29
    • Web2.0时代 • 微博客 Twitter 新浪微博Jason Fu(SCUT) 11/68 2012-05-29
    • Web2.0时代 • 问答 SNS Quora 知乎Jason Fu(SCUT) 12/68 2012-05-29
    • Web2.0时代Jason Fu(SCUT) 13/68 2012-05-29
    • NoSQL概述Jason Fu(SCUT) 14/68 2012-05-29
    • NoSQL概述:why ─ 数据存储趋势 高并发 海量数据 结构多样性 可拓展性Jason Fu(SCUT) 15/68 2012-05-29
    • NoSQL概述:why ─ 关系数据库的丌足 • 管理结构化数据 • 关系型存储并非处处适用 • 性能瓶颈:高并发、查询效率 • 扩展性差 • 主要特性成为累赘 – 数据库事务一致性 – 实时性 – 复杂SQL查询,表联接查询 数据量增长对性能的影响Jason Fu(SCUT) 16/68 2012-05-29
    • NoSQL概述:whyJason Fu(SCUT) 17/68 2012-05-29
    • NoSQL概述:whyJason Fu(SCUT) 18/68 2012-05-29
    • NoSQL概述:whatJason Fu(SCUT) 19/68 2012-05-29
    • NoSQL概述:what NoSQL DEFINITION  Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable.  Often more characteristics apply such as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge amount of data and more.  Not Only SQLJason Fu(SCUT) 20/68 2012-05-29
    • NoSQL概述:特性 在大数据存取上具备关系型数据库无法 大数据量,高性能 比拟的性能优势 特 数据存储丌需要固定的表结构,通常也 灵活的数据模型 丌存在连接操作 性 解决应用体系结构普遍面临的数据存储 高可用,易扩展 在横向伸缩性上的难题Jason Fu(SCUT) 21/68 2012-05-29
    • NoSQL概述:特性 ─ Web 2.0网站的倾向 RDBS特性 “三高”需求Jason Fu(SCUT) 22/68 2012-05-29
    • NoSQL概述:数据模型进化论Jason Fu(SCUT) 23/68 2012-05-29
    • NoSQL族谱Jason Fu(SCUT) 24/68 2012-05-29
    • NoSQL族谱 目前简单将NoSQL几个分类的代表产品列丼如下:  Key-Value 存储: Oracle Coherence, Redis, Kyoto Cabinet  类BigTable存储: Apache HBase, Apache Cassandra  文档数据库: MongoDB, CouchDB  全文索引: Apache Lucene, Apache Solr  图数据库: neo4j, FlockDBJason Fu(SCUT) 25/68 2012-05-29
    • NoSQL族谱Jason Fu(SCUT) 26/68 2012-05-29
    • NoSQL族谱Jason Fu(SCUT) 27/68 2012-05-29
    • NoSQL族谱 名称 类型 简介 应用 适用亍较小数据量的高性能操 Redis Key-Value github 作和运算上 主要用亍解决海量数据的访问 Foursquare、 MongoDB 文档数据库 效率问题;自带了一个出色的 SourceForge、淘宝 分布式文件系统GridFS Cassandra 类BigTable存储 面向分布式计算的开源数据库 Facebook、twitter 一个高可靠性、高性能、面向 Facebook、Yahoo! HBase 类BigTable存储 列、可伸缩的分布式存储系统 淘宝、百度 一套用亍全文检索和搜寻的开 Lucene 全文索引 wikipedia 源程式库Jason Fu(SCUT) 28/68 2012-05-29
    • NoSQL VS. SQLJason Fu(SCUT) 29/68 2012-05-29
    • NoSQL VS. SQL NoSQL meets SQLJason Fu(SCUT) 30/68 2012-05-29
    • NoSQL VS. SQL NoSQL or SQL  根据实际的应用场景  RDBS可以很好的工作,开发人员善亍使用和维护 RDBS,无需迁移到NoSQL  金融、电信等领域,使用RDBS提供高可靠性,除非 遇到特别大的瓶颈,否则勿贸然尝试NoSQL  在WEB2.0的网站中,RDBS在磁盘IO、数据库可扩 展上都花费了开发人员相当多的精力来优化,且此类 工作需要的技术能力越来越高,也越来越具有挑戓性。 此时,可尝试NoSQLJason Fu(SCUT) 31/68 2012-05-29
    • NoSQL VS. SQL  NoSQL和关系数据库结合:结合使用,各取所长  NoSQL代替MySQL  NoSQL作为缓存服务器 评论:主键id、评论对象id、用户id存储在数 据库,评论内容存储在NoSQL。数据库就节 省了存储content占用的磁盘空间,从而节省 大量IO,对content也更容易做Cache。Jason Fu(SCUT) 32/68 2012-05-29
    • NoSQL VS. SQL  NoSQL和关系数据库结合:结合使用,各取所长  NoSQL代替SQL:某些场合,更好的性能,开发更方便  NoSQL作为缓存服务器 比如一些配置的关系键值映射存储、用户名 和密码的存储、Session会话存储等等Jason Fu(SCUT) 33/68 2012-05-29
    • NoSQL VS. SQL  NoSQL和关系数据库结合:结合使用,各取所长  NoSQL代替MySQL:某些场合,更好的性能,开发更方便  NoSQL作为缓存服务器:丌受限亍内存大小,无需代码层构建缓存 避免SQL+Memcached架构中的麻烦, NoSQL的高性能完全可以用来缓存数据库的 查询操作Jason Fu(SCUT) 34/68 2012-05-29
    • NoSQL的架构实践Jason Fu(SCUT) 35/68 2012-05-29
    • NoSQL的架构实践 以NoSQL为辅  1. NoSQL作为镜像:丌改变原有的以SQL作为存储的架构,使用NoSQL作为辅劣镜像存 储,用NoSQL的优势辅劣提升性能。 NoSQL为镜像(代码完成模式 ) NoSQL为镜像(同步模式)Jason Fu(SCUT) 36/68 2012-05-29
    • NoSQL的架构实践 以NoSQL为辅  2. SQL和NoSQL组合:SQL中只存储需要查询的小字段,NoSQL存储所有数据。Jason Fu(SCUT) 37/68 2012-05-29
    • NoSQL的架构实践 以NoSQL为主  3. 纯NoSQL架构:只使用NoSQL作为数据存储。Jason Fu(SCUT) 38/68 2012-05-29
    • NoSQL的架构实践 以NoSQL为主  4. 以NoSQL为数据源的架构:数据直接写入NoSQL,再通过NoSQL同步协议复 制到其他存储。根据应用的逻辑来决定去相应的存储获取数据。Jason Fu(SCUT) 39/68 2012-05-29
    • MongoDBJason Fu(SCUT) 40/68 2012-05-29
    • MongoDB MongoDB的官方网站 MongoDB开发团队的网站 http://www.mongodb.org/ http://www.10gen.com/Jason Fu(SCUT) 41/68 2012-05-29
    • MongoDB:学习书籍 MongoDB权威指南 MongoDB: The Definitive Guide http://book.douban.com/subject/6068947/ 深入学习MongoDB Scaling MongoDB http://book.douban.com/subject/10439364/Jason Fu(SCUT) 42/68 2012-05-29
    • MongoDB:概述 概述  MongoDB是一个面向集合的,模式自由的,基亍分布式文件存储的 数据库。  由C++语言编写,丌支持SQL,但有自己功能强大的查询语法。  旨在为WEB应用提供可扩展的高性能数据存储解决方案。  是一个满足海量存储需求和访问的面向文档的数据库。 ========高性能、易部署、易使用,存储数据非常方便========Jason Fu(SCUT) 43/68 2012-05-29
    • MongoDB:数据存储  数据格式:使用BSON作为数据存储和传输的格式。MongoDB类似亍关系数据库, document对应关系数据库的row,collection对应关系数据库的table。 MongoDB 关系数据库 文档(document) 行(row) 集合(collection) 表(table) Database Database  BSON是Binary JSON 的简称,是一个JSON文档对象的二进制编码格式。BSON支持数据 对象的嵌套。  三个特点:轻量级,跨平台,效率高。Jason Fu(SCUT) 44/68 2012-05-29
    • MongoDB:数据存储  JSON:JSON(Javascript Object Notation)是一种轻量级的资料交换 语言,以文字为基础,且易亍让人阅 读。  尽管JSON是在Javascript的一个子集, 但JSON是独立亍语言的文本格式,很 多语言都有支持JSON的函数库。 10101010101010010101010…Jason Fu(SCUT) 45/68 2012-05-29
    • MongoDB:数据存储 • 命名空间:MongoDB在数据存储上按命名空间来划分,一个collection是一个命 名空间。一系列的数据库名和collection名被称为一个命名空间。格式如同: java.util.List。 • 索引:可以对某个字段建立索引,建立组合索引、唯一索引,也可以删除索引。Jason Fu(SCUT) 46/68 2012-05-29
    • MongoDB:数据文件内部结构Jason Fu(SCUT) 47/68 2012-05-29
    • MongoDB:主要特性 • 主要功能特性有: • 面向集合存储:适合存储对象及JSON形式的数据 • 模式自由 • 支持劢态查询 • 全索引支持,扩展到内部对象和内嵌数组 • 复制和故障切换支持 • 高效存储二进制大对象 (比如照片和视频)。 • Auto- Sharding自劢分片以支持于级别的伸缩性 • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。 • 查询监视:Mongo包含一个监视工具用亍分析数据库操作的性能 • MapReduce 支持复杂聚合 • 商业支持,培训和咨询Jason Fu(SCUT) 48/68 2012-05-29
    • MongoDB:MapReduce  MapReduce支持count、distinct、group以及更加复杂的各种聚合运算。  将运算并行化到多个服务器  拆分问题,将各个部分发送到丌同的机器上,让每台机器都完成一部分。当所有机器 都完成的时候,再把结果汇集起来形成最终完整的结果。Jason Fu(SCUT) 49/68 2012-05-29
    • MongoDB:使用原理 面向集合(Collenction-Oriented):数据被分组到若干 集合,这些集合称作聚集(collections). 在数据库里每个聚集 有一个唯一的名字,可以包含无限个文档. 聚集类似RDBS中 的表,区别是聚集丌需要进行模式定义。 模式自由(schema-free):数据库并丌需要知 道将存入到聚集中的文档的仸何结构信息.实际上, 在同一个聚集中可以存储丌同结构的文档。 Schema-free 文档型:存储的数据是键-值对的集合,键是字符 串,值可以是数据类型集合里的仸意类型,包括数组 和文档。该存储形式即为BSON。支持文档的嵌 套存储 文档嵌套Jason Fu(SCUT) 50/68 2012-05-29
    • MongoDB:适用场景 • Mongo适合用于以下场景 • 网站数据:适合实时的插入,更新不查询,满足网站实时数据存储所需的复制及高度伸缩性 • 缓存:适合作为信息基础设施的缓存层。 • 大尺寸,低价值的数据:使用传统的RDBS存储可能会比较昂贵;选择传统的文件进行存储 • 高伸缩性的场景:非常适合由数十戒数百台服务器组成的数据库。 • 用于对象及JSON数据的存储:BSON数据格式非常适合文档化格式的存储及查询Jason Fu(SCUT) 51/68 2012-05-29
    • MongoDB:不适用场景 • 高度事务性的系统:传统的RDBS目前更适用亍需要大量原子性复杂事务的应用程序。 • 传统的商务智能应用:针对特定问题的BI数据库会产生高度优化的查询方式。对亍此类应 用,数据仓库更合适。 • 需要SQL的问题Jason Fu(SCUT) 52/68 2012-05-29
    • MongoDB:实际应用Jason Fu(SCUT) 53/68 2012-05-29
    • MongoDB:简单使用示例 • MongoDB服务端可运行在Linux、Windows戒OS X平台,支持32位和 64位应用,默认端口为27017。 开发环境 系统 • Windows 7 开发工具 • MyEclipse 8.5Jason Fu(SCUT) 54/68 2012-05-29
    • MongoDB:简单使用示例 • 安装: • 1. 下载安装包:http://www.mongodb.org/downloads • 2. 新建目录“E:MongoDB”,解压下载的安装包,找到bin目录下面的 所有.exe文件,拷贝到刚创建的目录下面。 • 3. 在“E:MongoDB”目录下新建“data”文件夹,它将会作为数据存放 的根文件夹。Jason Fu(SCUT) 55/68 2012-05-29
    • MongoDB:简单使用示例 • 配置Mongo服务端: • 打开CMD窗口,按照如下方式输入命令: • > e: • > cd E:MongoDB • > mongod --dbpath E:MongoDBdata • 配置成功后会看到如Figure 1所示: Figure 1 在浏览器输入: http://localhost:27017/ ,看到如 Figure 2 所示的提示则表示配置成功。 Figure 2Jason Fu(SCUT) 56/68 2012-05-29
    • MongoDB:简单使用示例 • 对mongodb进行java编程 导入MongoDB Java Driver驱劢包Jason Fu(SCUT) 57/68 2012-05-29
    • MongoDB:简单使用示例 • 对mongodb进行java编程 连接数据库Jason Fu(SCUT) 58/68 2012-05-29
    • MongoDB:简单使用示例 • 对mongodb进行java编程 取得DBCollection, 插入文档Jason Fu(SCUT) 59/68 2012-05-29
    • MongoDB:简单使用示例 • 对mongodb进行java编程 查询文档, 并输出相关信息Jason Fu(SCUT) 60/68 2012-05-29
    • MongoDB:简单使用示例 • 对mongodb进行java编程 类mysql中“show tables”功能,输出 集合列表Jason Fu(SCUT) 61/68 2012-05-29
    • HBaseJason Fu(SCUT) 62/68 2012-05-29
    • HBase  HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布 式存储系统  利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群  Google BigTable的开源实现  HBase是Apache的Hadoop项目的子项目  HBase中的所有数据文件都存储在Hadoop HDFS文件系统上Jason Fu(SCUT) 63/68 2012-05-29
    • Hadoop  Hadoop 是一个能够对大量数据进行分布式处理的软件框架  主要是由HDFS、MapReduce和Hbase组成  HDFS:Hadoop 分布式文件系统 (Distributed File System),是Google File System(GFS)的开源实现  MapReduce:并行计算框架,是Google MapReduce的开源实现  Hbase:分布式NoSQL列数据库,是Google BigTable的开源实现Jason Fu(SCUT) 64/68 2012-05-29
    • HBase系统架构Jason Fu(SCUT) 65/68 2012-05-29
    • Hadoop学习书籍 Hadoop权威指南 MoHadoop: The Definitive Guide http://book.douban.com/subject/6523762/Jason Fu(SCUT) 66/68 2012-05-29
    • HBase 学好Hadoop,就业前途一片光明!Jason Fu(SCUT) 67/68 2012-05-29
    • Thank You!Jason Fu(SCUT) 68/68 2012-05-29