非关系型数据库NoSQL

NoSQL(not only sql)非关系型数据库

一、关系型数据库与非关系型数据库对比

常见的关系型数据库:MySQL、Oracle、SqlServer

关系型数据库涉及联合查询(join),数据量大的时候查询会锁表变慢

NoSQL数据之间无关系,可以随意扩展

NoSQL数据存储简单,而且可以存在内存中,所以读写速度非常快,即使数据量很大也很快

NoSQL不需要建立表、字段等数据,他可以随时存储自定义的格式,而关系型数据库增、改字段非常麻烦,尤其是数据量非常大的情况下,就更麻烦

二、常见的NoSQL有哪几种?

键值(Key-Value)数据库 产品:redis、memcached、riak,redis/memcached 属于键值(Key-Value)数据库,适合存储用户信息,比如会话、配置文件、参数、购物车等等,这些信息一般都和ID(键)挂钩,这种情况下,键值数据库是个很好的选择

三台web,用户登录时候任何一台,登录信息保存在redis或者memcached中,再次登录web2,不需要验证登录,完成session保持

面向文档(Document-Oriented)数据库,产品:MongoDB、CouchDB、RavenDB

MongoDB属于文档(Document-Oriented)数据库,将数据以文档的方式存储,每个文档都是一系列数据库的集合。每个数据项都有一个名称与对应的值,值既可以是建档的数据类型,如字符串,数字和日期等;也可以是复杂的类型,如有序的表和关联对象。数据存储的最小单位是文档。

列存储(wide column store/Column-Family)数据库 产品:Cassandra\Hbase

图(Graph-Oriented)数据库 产品:Neo4J、Infinite Graph、OrientDB

三、memcached介绍

memcached是通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能,官方站点http://memcached.org/

基于C/S(服务端客户端)架构,协议简单

基于libevent架构的事件处理

自主内存存储处理(slab allowcation)

数据过期方式:lazy Expiration 和 LRU

memcached数据流向

Slab Allocation的原理——将分配的内存分割成各个尺寸的快(chunk),并把尺寸相同的快分成组(chunk的集合),每个chunk的集合被称为Slab

memcached的内存分配一Page为单位,Page默认值为1M,可以在启动时通过-l参数来指定

Slab是由多个Page组成的,Page按照指定大小切割成多个chunk,其机构如下图:

大小关系可以这样理解: slab>page>chunk

Memcached数据过期方式

Lazy Expiration

memcached内部不会监视是否过期,而是在get时候查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间

LRU

memcached会优先使用已经超时的记录空间,但即使如此,也会发生追加新纪录时空间不足的情况,此时就要使用名称为Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当空间不足时候(无法从slab class上获取到新的空间时候),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。

时间: 2024-10-07 05:26:21

非关系型数据库NoSQL的相关文章

Redis 非关系型数据库 ( Nosql )

简介: Redis 是一个开源的,高性能的 key-value 系统,可以用来缓存或存储数据. Redis 数据可以持久化,并且支持多种数据类型:字符串(string),列表(list),哈希(hash),集合(set)和有序集合(sorted set). 能够对关系型数据库起到很好的补充作用.它还提供了多种客户端 Python .Ruby .Erlang .PHP ,可以方便调用. 持久化: Redis 是一种内存数据库(跟 memcache 类似),在数据存取效率方面很优秀,由于内存中的数据

数据库大师成长日记:您最需要了解的NoSQL非关系型数据库

朋友们,我们平时使用的数据库,大多都是关系型数据库,包括MySQL.PostgreSQL.SQLServer等.关系型数据库的特点是数据的存储通过二维表格实现,将数据存储在相互独立的表格中. 近年来,随着互联网的飞速发展,数据的形态发生了很大改变,非关系型数据库NoSQL应运而生.越来越流行.NoSQL主要包括键值(Key-Value)存储数据库.列存储(Column-oriedted)数据库.面向文档(Document-Oriented)数据库.图形(Graph)数据库四种,下面介绍三款最常用

非关系型数据库(NoSQL)——Redis安装及部署详解

在现在的互联网大潮中,NoSQL可谓是家喻户晓,Redis作为NoSQL中及其重要的一员,使我们走向架构道路的一条必经之路.作为运维工程师来说,是必须要掌握的! 既然提到了Redis数据库是非关系型数据,并且需要掌握Redis数据库.那么关于关系型数据库与非关系型数据库的基本概念是必须要了解的. 一.关系型数据库与非关系型数据库的基本概念: 数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库,我们统称为非关系型数据库. 1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关

关系型数据库和非关系型数据库简介

关系型数据库是基于关系模型提出来的数据库.那么什么是关系模型呢?以行和列的方式二维表的方式存储数据的模型就是关系型数据库.例如:mysql和oracle 非关系型数据库(NoSQL即Not-Only SQL)可以作为关系型数据库的良好补充.随着互联网web网站的兴起,关系型数据库暴露的缺点越来越多,比如对数据库高并发读写,对海量数据的高效率存储和访问.常见的非关系型数据库有redis,mongoDB

python 之操作redis数据库(非关系型数据库,k-v)

数据库: 1. 关系型数据库 表结构 2. 非关系型数据库 nosql (k - v 速度快),常用的时以下三种: memcache 存在内存里 redis 存在内存里 mangodb 数据还是存在磁盘上 Redis里的数据类型有String 和hash类型,下面主要是对Redis 的一些操作. 一.String类型 r = redis.Redis(host='localhost',port=6379,db=3) r.set('nancy2','201801211505') #set数据 pri

NoSQL:从关系型数据库到非关系型数据库

关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库. 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概念: 1.关系 可以理解为一张二维表,每个关系都有一个关系名,在数据库中被称为表名 2.元组 可以理解为二维表中的一行,在数据库中被称为记录 3.属性 可以理解为二维表中的一列,在数据库中被称为字段 4.域 属性的取值范围,在数据库中为某一列的取值限制 5.关键字 一族可以唯一标识元组的

初识关系型数据库(SQL)与非关系型数据库(NOSQL)

一.关系型数据库(SQL): Mysql,oracle 特点:数据和数据之间,表和字段之间,表和表之间是存在关系的 例如:部门表 001部分,   员工表 001 用户表,用户名.密码 分类表 和 商品表, 一对多关系. 优点:①数据之间有关系,进行数据的增删改查时非常方便的. ②关系型数据库 有事务操作. 保证数据的完整性 缺点:1.因为数据和数据之间有关系的,关系是由底层大量算法保证 大量算法会拉低系统运行速度 大量算法会消耗系统资源 2.海量数据的增删改查时会显得无能为力. 很可能宕机 3

关系型数据库和非关系型数据库,RDBMS和NoSQL区别?

简单地讲:什么是关系型数据库?依据关系模型来建立的,不同的表或库之间有相关联性 什么是非关系型数据库?不同的表或库之间没有相关联性,依据非关系模型来建立 关系型数据库和非关系型数据库各自的特点:RDBMS:二维表数据存取通过SQL数据安全性方面强 NoSQL:关注高性能,高并发,灵活性等特点 首先说说各自的优缺点:强大的查询功能--强一致性--二级索引: 关系型的优点,非关系型的缺点灵活模式--扩展性--性能: 非关系形的优点,关系型的缺点 NoSQL的分类和典型的产品:键值(KV)存储:Mem

关系型数据库与非关系型数据库的区别

在关系型数据库中,导致性能欠佳的最主要因素是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询.     为了保证数据库的ACID特性(ACID:● 安全存储合适的数据  ●快速检索合适的数据  ●支持多个并行的用户会话 ), 我们必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性