NoSql 简介

来源 java技术栈 【NoSql 简介】

NoSql 简介

1、概述

NoSql=Not only sql 意思是不仅仅是sql泛指非关系型数据库,nosql无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式,而在关系数据库里,增删字段是一件非常麻烦的事情,如果是非常大数据量的表,增加字段就很麻烦。

2、Nosql与关系型数据库(RDBMS)的区别

NOSQL RDBMS
代表着不仅仅是sql 高度组织化结构化的数据
没有声明性查询语言 结构化查询语言sql
没有预定义的模式 数据和关系都存储在单独的表中
键值对存储,列存储,文档存储,图形化数据库 数据操纵语言没数据定义语言dml ddl
最终一致性,而非acid属性 严格的一致性
非结构化和不可预知的数据 基础事务
cap定理(Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容忍性) 可靠性)
高性能,高可用性和可伸缩性

3、NoSql 特性

3V+3高 海量Volume多样Variety实时Velocity 高并发 高可扩 高性能

4、当下nosql的经典应用(nosql和sql一起使用)

nosql数据模型简介

  • 商品基本信息(名称,价格,出产日期,生产产商等)关系型数据库
  • 商品描述,详情,评价信息(多文字类)文档数据库mongDB
  • 商品图片 商品图片展现类 分布式的文件系统中(淘宝自己的tfs google的gfs hadoop的hdfs)
  • 商品的关键字(搜索引擎 ISearch)
  • 商品的波段性的热点高频信息(内存数据库:tair redis memcached)

5、NoSql数据模型

以一个电商客户、订单、订购、地址模型来对比下关系型数据库和菲关系型数据库

  • 传统方式 1:1 1:N N:N 主外键
  • nosql json
{
 "customer":{
   "id":1136,
   "name":"Z3",
   "billingAddress":[{"city":"beijing"}],
   "orders":[
    {
      "id":17,
      "customerId":1136,
      "orderItems":[{"productId":27,"price":77.5,"productName":"thinking in java"}],
      "shippingAddress":[{"city":"beijing"}]
      "orderPayment":[{"ccinfo":"111-222-333","txnid":"asdfadcd334","billingAddress":{"city":"beijing"}}],
      }
    ]
  }
}

6、nosql数据库四大分类

  1. KV键值:新浪(berkeley+redis)美团(redis+tair)阿里,百度(memcached+redis)
  2. 文档型(bson格式较多):CouchDB,MongDB(是一个基于分布式文件存储的数据库,由c++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案,其介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富的,最像关系数据库的)
  3. 列存储数据库:Cassandra,Hbase,分布式文件系统
  4. 图关系数据库(它不是放图形的,放的是关系比如:朋友圈社交网网络,广告推荐):Neo4j.InfoGird

你可能感兴趣的:(nosql,redis)