nosql

NOSQL入门

孤街浪徒 提交于 2020-03-16 17:30:01
某厂面试归来,发现自己落伍了!>>> 什么是NoSQL? NoSQL (Not Only SQL),指的是非关系型的数据库。是对不同于传统的关系型数据库的数据库管理系统的统称。 轻量、开源、不提供SQL功能的关系数据库。 NoSQL用于超大规模数据的存储。数据存储不需要固定的模式,无需多余操作就可以横向扩展。 为什么使用NoSQL ? 今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。 CAP定理 对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistency) (所有节点在同一时间具有相同的数据) 可用性(Availability) (保证每个请求不管成功或者失败都有响应) 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作) CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

分布式缓存 — MongoDB

笑着哭i 提交于 2020-03-14 07:39:22
--- 数据库管理系统 数据库管理系统主要分为俩大类:RDBMS、NOSQL。在个人电脑、大型计算机和主机上应用最广泛的数据库管理系统是关系型DBMS。NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。 两者最重要的不同点是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。 常见的数据库管理系统,及其排名情况如下: NoSQL数据库四大家族 NoSQL中的四大家族主要是:列存储、键值、图像存储、文档存储,其类型产品主要有以下这些。 存储类型 NoSQL 键值存储 最终一致性键值存储 Cassandra、Dynamo、Riak、Hibari、Virtuoso、Voldemort 内存键值存储 Memcached、Redis、Oracle Coherence、NCache、Hazelcast、Tuple space、Velocity 持久化键值存储 BigTable、LevelDB、Tokyo Cabinet、Tarantool、TreapDB、Tuple space 文档存储 MongoDB、CouchDB、SimpleDB、 Terrastore 、 BaseX 、Clusterpoint 、 Riak、No2DB 图存储 FlockDB、DEX、Neo4J、AllegroGraph

Redis 介绍及安装

纵饮孤独 提交于 2020-03-12 20:43:12
Redis介绍 什么是Redis? Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库。 它提供了五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型 它是一种 NoSQL 数据库。 什么是NoSQL? NoSQL ,即 Not-Only SQL (不仅仅是 SQL ),泛指非关系型的数据库。 什么是关系型数据库?数据结构是一种有行有列的数据库 NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案。 NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库。 NoSQL数据库分类 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant 、 Redis 、 Voldemort 、 Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对 优势: 快速查询 劣势: 存储的数据缺少结构化 列存储数据库 相关产品: Cassandra , HBase , Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限 文档型数据库 相关产品: CouchDB 、 MongoDB 典型应用: Web 应用(与

MongoDB_文档_查询

*爱你&永不变心* 提交于 2020-03-12 03:58:58
MongoDB 文章目录 MongoDB 1.查询文档 2.MongoDB 与 RDBMS Where 语句比较 3.MongoDB AND 条件 4.MongoDB OR 条件 5.AND 和 OR 联合使用 1.查询文档 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下: >db.col.find().pretty() pretty() 方法以格式化的方式来显示所有文档。 实例 以下实例我们查询了集合 col 中的数据: > db.col.find().pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "database1", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } 除了

Redis原理介绍

心已入冬 提交于 2020-03-12 01:52:04
Redis是一个基于key-value的高速缓存系统,类似于memcached,但是支持更复杂的数据结构List、Set、SortedSet,并且有持久化的功能。 由于近期工作很多地方都用到了它,所以花了不少时间来阅读文章、编码实验,了解一下Redis都能做些什么,能有什么样的性能表现。 首先遇到的第一个问题就是,Redis究竟是什么? 这个问题看似可笑,其实不然,我很赞同Timyang的 观点 ,架构者对Redis的理解不同、定位也不同,决定了Redis在整个系统结构中会扮演什么样的角色。我总结一下,主流有3种理解: 1.key value store.是一个以key-value形式存储的数据库,定位直指MySQL,用来作为唯一的存储系统。 2.memory cache.是一个把数据存储在内存中的高速缓存,用来在应用和数据库间提供缓冲,替代memcachd。 3.data structrue server.把它支持对复杂数据结构的高速操作作为卖点,提供某些特殊业务场景的计算和展现需求。比如排行榜应用,Top 10之类的。 目前更多的人还是把它定位为一个memcached的升级版,提供更多的数据结构操作,仍然是一个cache。 传统的memcached在类似于SNS社区这样的业务场景下,有一些弊端。比如存储好友关系,不得不使用特殊字符分隔的长字符串来保存

索引介绍Hash

大憨熊 提交于 2020-03-11 14:04:22
我先聊一下Hash: 大家可以先看一下下面的动图 注意字段值所对应的数组下标是哈希算法随机算出来的,所以可能出现 哈希冲突 。 那么对于这样一个索引结构,现在来执行下面的sql语句: select * from sanguo where name='鸡蛋' 可以直接对‘鸡蛋’按哈希算法算出来一个数组下标,然后可以直接从数据中取出数据并拿到所对应那一行数据的地址,进而查询那一行数据, 那么如果现在执行下面的sql语句: select * from sanguo where name>'鸡蛋' 则无能为力,因为哈希表的特点就是 可以快速的精确查询,但是不支持范围查询 。 如果做成了索引,那速度也是很慢的,要全部扫描。 问个题外话,那Hash表在哪些场景比较适合? 等值查询的场景,就只有KV(Key,Value)的情况,例如Redis、Memcached等这些NoSQL的中间件。 你说的是无序的Hash表,那有没有有序的数据结构? 有序数组 ,它就比较优秀了呀,它在等值查询的和范围查询的时候都很Nice。 那它完全没有缺点么? 不是的,有序的适合静态数据,因为如果我们新增、删除、修改数据的时候就会改变他的结构。 比如你新增一个,那在你新增的位置后面所有的节点都会后移,成本很高。 那照你这么说他根本就不优秀啊,特点也没地方放。 此言差矣,可以用来做静态存储引擎啊,用来保存静态数据

NoSQL 与 关系型数据库

爱⌒轻易说出口 提交于 2020-03-11 10:00:21
一、二者的基本概念 NoSQL,泛指非关系型的数据库。 关系数据库,是建立在关系模型基础上的数据库。 这里提到了关系模型, 关系模型是1970年由E.F.Codd提出的。 它和层次、网状模型相比,有以下特点: 1.数据结构简单(二维表格) 2.扎实的理论基础。 a.关系运算理论 b.关系模式设计理论 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征: 不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。 无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。 弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。 分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。 异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样

Redis

三世轮回 提交于 2020-03-10 05:56:43
Redis 安装Redis 持久化模式 官网地址: redis.io 中文版官网: redis.cn redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value-database), 是一个非关系型数据库,也称为NoSQL数据库。由C语言开发。 redis 提供将内存通过网络远程共享的一种服务,提供类似功能的还memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。 Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛. 目前redis在DB-Engine月排行榜 https://db-engines.com/en/ranking 中一直比较靠前,而且一直是键值型存储类的首位 相对Rdis来说,redis和memcached的对比 :   1.支持数据的持久化:可以将内存中的数据保持在磁盘中,重启 redis 服务或服务器之后可以从备份文件中恢复数据到内存继续使用。    2.支持更多的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合),而memcached仅支持string(字符串)   3.支持数据的备份:可以实现类似于数据的 master-slave 模式的数据备份,另外也支持使用快照+AOF。    4.支持更大的

数据库介绍

戏子无情 提交于 2020-03-10 04:34:33
数据库技术 数据库技术是一门数据库管理的有效技术,研究如何对数据进行有效地科学地管理数据,从而为用户提供可共享的、安全的、可靠的数据。 数据库技术分为了数据、数据库、数据库系统以及数据库管理系统四个部分 数据 早期的计算机系统主要用于科学计算,处理的数据是数值型数据像整数、浮点数等。 而在现代对于数据的概念是广义的,不再是单纯的一个数值,而是有各种含义。比如文字、图片、图像、音频、视频等都是数据。 数据除了表现形式外,还有语义,例如: 如上图所示,一个数值88,它既可以单纯表示一个值,也可以表示为一个部门的人数或者是一门考试的成绩、一个人的体重等等。因此对于一个数据我们要以多方面来看待它。 记录 数据在我们数据库的储存中不是离散的,而是有组织的、统一的。记录是在计算机中表示和存储数据的一种格式或一种方法。我们可以用一组数据来描述一个人员的具体信息,这一组数据在数据库中被称为一条记录。例如: 我们用一组数据来描述一位学生的信息,例如姓名、性别、籍贯、出生年月、以及年级等信息,这么一组数据存入我们的数据库中被称为一条记录。 数据库(database db) 所谓数据库指的是大量数据的集合,数据库是存放我们数据的一个容器。它有以下特点: 永久存储 提供数据长期存储的一个机制,能够在数据出现故障时能够对数据进行恢复,来保证数据的完整。 有组织 按一定的数据模型组织,描述和储存

项目前导知识的学习—-01—(Redis内存数据库、Redis、redis常用五大数据类型:string/list/hash/set/Zset、Python操作Redis、Redis主从配置)

限于喜欢 提交于 2020-03-10 04:01:13
1、Redis内存数据库 背景 随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。 数据库的发展历史 1.在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求 单数据库实例 2.随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求 缓存(memcache)+单数据库实例 3.缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大; 缓存+主从数据库+读写分离 4.数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈; 缓存+主从数据库集群+读写分离+分库分表 5.互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性高,实时性高的,并且数据格式不固定的数据。 nosql+主从数据库集群+读写分离+分库分表 2、Redis Redis是一个高性能的,开源的,C语言开发的,键值对存储数据的nosql数据库。 NoSQL:not only sql,泛指非关系型数据库 Redis/MongoDB/Hbase Hadoop 关系型数据库:MySQL、oracle、SqlServer Redis特性 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中