NoSQL 入门和概述

来源:我的博客站 OceanicKang |《NoSQL 入门和概述》

入门概述

是什么

NoSQL = Not Only SQL,意为“不仅仅是SQL”,泛指 非关系型数据库

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

NoSQL 数据库的产生就是为了解决大规模数据集合、多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储

这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展

能干嘛

易扩展

NoSQL 数据库种类繁多,但是一个共同的特点就是去掉了关系型数据库的关系型特性

数据之间无关系,这样就非常容易扩展。也无形之中,在架构的层面上带来了可扩展的能力

大数据量高性能

NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀

这得益于它的无关系性,数据库的结构简单

一般 MySQL 使用 Query Cache,每次表的更新 Cache 就失效,是一种大粒度的 Cache

在针对 WEB2.0 的交互频繁的应用,Cache 性能不高,甚至可能造成数据库负担

而 NoSQL 的 Cache 是记录级的,是一种细粒度的 Cache,所以 NoSQL 在这个层面上来说就要性能高很多了

多样灵活的数据模型

NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式

而在关系型数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是噩梦

传统 RDBMS VS NoSQL

RDBMS:关系数据库管理系统

  • 高度组织化、结构化数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中
  • 数据操纵语言,数据定义语言
  • 严格的一致性
  • 基础事务

NoSQL:非关系数据库

  • 代表着不仅仅是 SQL
  • 没有声明性查询语言
  • 没有预定义的模式
  • 键值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而非 ACID(数据库事务执行的四个基本要素) 属性
  • 非结构化和不可预知的数据
  • CAP 定理:NoSQL数据库的基石,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)
  • 高性能、高可用性和可伸缩性

去哪下

Redis

《Redis 安装》

Memcache

《Linux Memcached 安装》

《Windows 下安装 Memcached》

MongoDB

《Windows 平台安装 MongoDB》

《Linux 平台安装 MongoDB》

《Mac OSX 平台安装 MongoDB》

怎么玩

key + value(键值对)
cache(缓存)
persistence(持久化)

3V + 3高

大数据时代的 3V

  • 海量 Volume(体积)
  • 多样 Variety(品种)
  • 实时 Velocity(速度)

互联网需求的 3高

  • 高并发
  • 高可扩
  • 高性能

当下的 NoSQL 经典应用

当下的应用基本是 SQL 和 NoSQL 一起使用

阿里巴巴中文站

架构发展历程

**1、**演变过程

1.png

**2、**第四代网站架构

  • 性能和海量数据问题
    • 大规模的 Memcached 集群、高性能应用服务器升级、KV、CDN 等一定程度解决了网站的性能问题
    • 数据切分和分布式存储解决了网站海量数据的问题
  • 安全问题
    • 镜像站解决了网站的灾备问题
    • 网站框架的安全特性升级透明的过滤了常见的网站安全漏洞

但到了 2010 年底,阿里巴巴却不得不开始实施第五代网站架构改造

**3、**第五代网站架构使命

  • 敏捷
    • 业务快速增长,每天都要上线大量的小需求
    • 应用系统日益膨胀,耦合恶化,架构越来越复杂,会带来更高的开发成本。如何保持业务开发敏捷性?
  • 开放
    • Facebook 和 AppStore 带来的启示,如何提升网站的开放性,吸引第三方开发者加入到网站的共建中来?
  • 体验
    • 网站的并发压力快速增长,用户却对体验提出了更高的要求

多数据源多数据类型的存储问题

2.png

商品基本信息

名称、价格、出厂日期、生产厂商等

利用关系型数据库,MySQL/Oracle(淘宝内部用的 MySQL 是经过内核修改的)

淘宝在去 IOE 化(即拿掉 Oracle),为什么去 IOE ?

2008年,王坚加盟阿里巴巴成为集团首席架构师,即现在的首席技术官。这位前微软亚洲研究院常务副院长被马云定位为:将帮助阿里巴巴集团建立世界级的技术团队,并负责集团技术架构以及基础技术平台搭建。
在加入阿里后,带着技术基因和学者风范的王坚就在阿里巴巴集团提出了被称为 “去IOE”(在 IT 建设过程中,去除 IBM小型机、Oracle 数据库及 EMC 存储设备)的想法,并开始把云计算的本质,植入阿里 IT 基因。
王坚这样概括 “去IOE” 运动和阿里云之间的关系: “去IOE” 彻底改变了阿里集团 IT 架构的基础,是阿里拥抱云计算,产出计算服务的基础。 “去IOE” 的本质是分布化,让随处可以买到的 Commodity PC 架构成为可能,使云计算能够落地的首要条件。

商品描述、详情、评价信息(多文字类)

多文字信息描述类,会造成 IO 读写性能变差,采用文档数据库 MongoDB

商品的图片

商品图片展示类,采用分布式的文件系统

1、淘宝自己的 TFS
2、Google 的 GFS
3、Hadoop 的 HDFS

商品的关键字

搜索引擎 ISearch,淘宝内用

商品的波段性的热点高频信息

采用内存数据库,Tair、Redis、Memcached

商品交易、价格计算、积分累计

采用外部系统、第三方支付接口,支付宝

总结

总结大型互联网应用(大数据、高并发、多样数据类型)的难点和解决方案

难点

  • 数据类型的多样性
  • 数据源的多样性和变化重构
  • 数据源改造而数据服务平台不需要大面积重构

解决办法

EAI 和统一数据平台服务层 UDSL

是什么
  • 在网站应用集群和底层数据源之间,构建一层代理,统一数据层

  • 统一数据层的特性

    • 模型数据映射
      • 实现业务模型各属性与底层不同类型数据源的模型数据映射
      • 目前支持关系型数据库,ISearch,redis,MongoDB
    • 统一的查询和更新API
      • 提供了基于业务模型的统一的查询和更新的 API,简化网站应用跨不同数据源的开发模式
    • 性能优化策略
      • 字段延迟加载,按需返回设置
      • 基于热点缓存平台的二级缓存
      • 异步并行的查询数据:异步并行加载模型中来自不同数据源的字段
      • 并发保护:拒绝访问频率过高的主机 IP 或 IP 段
      • 过滤高危的查询:例如会导致数据库崩溃的全表扫描
什么样

3.png

映射

4.png

API

5.png

热点缓存

6.png

下一篇:《NoSQL 数据库简介》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分  NoSQL入门 第1章  NoSQL的概念及适用范围 2 1.1  定义和介绍 3 1.1.1  背景与历史 3 1.1.2  大数据 5 1.1.3  可扩展性 7 1.1.4  MapReduce 8 1.2  面向列的有序存储 9 1.3  键/值存储 11 1.4  文档数据库 14 1.5  图形数据库 15 1.6  小结 16 第2章  NoSQL上手初体验 17 2.1  第一印象——两个简单的例子 17 2.1.1  简单的位置偏好数据集 17 2.1.2  存储汽车品牌和型号数据 22 2.2  使用多种语言 30 2.2.1  MongoDB驱动 30 2.2.2  初识Thrift 33 2.3  小结 34 第3章  NoSQL接口与交互 36 3.1  没了SQL还剩什么 36 3.1.1  存储和访问数据 37 3.1.2  MongoDB数据存储与访问 37 3.1.3  MongoDB数据查询 41 3.1.4  Redis数据存储与访问 43 3.1.5  Redis数据查询 47 3.1.6  HBase数据存储与访问 50 3.1.7  HBase数据查询 52 3.1.8  Apache Cassandra数据存储与访问 54 3.1.9  Apache Cassandra数据查询 55 3.2  NoSQL数据存储的语言绑定 56 3.2.1  Thrift 56 3.2.2  Java 56 3.2.3  Python 58 3.2.4  Ruby 59 3.2.5  PHP 59 3.3  小结 60 第二部分  NoSQL基础 第4章  理解存储架构 62 4.1  使用面向列的数据库 63 4.1.1  使用关系型数据库中的表格和列 63 4.1.2  列数据库对比RDBMS 65 4.1.3  列数据库当做键/值对的嵌套映射表 67 4.1.4  Webtable布局 70 4.2  HBase分布式存储架构 71 4.3  文档存储内部机制 73 4.3.1  用内存映射文件存储数据 74 4.3.2  MongoDB集合和索引使用指南 75 4.3.3  MongoDB的可靠性和耐久性 75 4.3.4  水平扩展 76 4.4  键/值存储MemcachedRedis 78 4.4.1  Memcached的内部结构 78 4.4.2  Redis的内部结构 79 4.5  最终一致性非关系型数据库 80 4.5.1  一致性哈希 81 4.5.2  对象版本 82 4.5.3  闲话协议和提示移交 83 4.6  小结 83 第5章  执行CRUD操作 84 5.1  创建记录 84 5.1.1  在以文档为中心的数据库中创建记录 85 5.1.2  面向列数据库的创建操作 91 5.1.3  键/值映射表的创建操作 93 5.2  访问数据 96 5.2.1  用MongoDB访问文档 96 5.2.2  用HBase访问数据 97 5.2.3  查询Redis 98 5.3  更新和删除数据 98 5.3.1  使用MongoDB、HBase和Redis更新及修改数据 98 5.3.2  有限原子性和事务完整性 99 5.4  小结 100 第6章  查询NoSQL存储 101 6.1  SQLMongoDB查询功能的相似点 101 6.1.1  加载MovieLens数据 103 6.1.2  MongoDB中的MapReduce 108 6.2  访问HBase等面向列数据库中的数据 111 6.3  查询Redis数据存储 113 6.4  小结 116 第7章  修改数据存储及管理演进 117 7.1  修改文档数据库 117 7.1.1  弱schema的灵活性 120 7.1.2  MongoDB的数据导入与导出 121 7.2  面向列数据库中数据schema的演进 124 7.3  HBase数据导入与导出 125 7.4  键/值存储中的数据演变 126 7.5  小结 126 第8章  数据索引与排序 127 8.1  数据库索引的基本概念 127 8.2  MongoDB的索引与排序 128 8.3  MongoDB里创建和使用索引 131 8.3.1  组合与嵌套键 136 8.3.2  创建唯一索引和稀疏索引 138 8.3.3  基于关键字的搜索和多重键 139 8.4  CouchDB的索引与排序 140 8.5  Apache Cassandra的索引与排序 141 8.6  小结 143 第9章  事务和数据完整性的管理 144 9.1  RDBMS和ACID 144 9.2  分布式ACID系统 147 9.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值