nosql

学会这15点,让你分分钟拿下Redis数据库

元气小坏坏 提交于 2020-02-14 06:00:59
1、Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 大家都知道了redis是基于key-value的no sql数据库,因此,先来了解一下关于key相关的知识点 1、任何二进制的序列都可以作为key使用 2、Redis有统一的规则来设计key 3、对key-value允许的最大长度是512MB 2、支持的语言: ActionScript Bash C C# C++ Clojure Common Lisp Crystal D Dart Elixir emacs lisp Erlang Fancy gawk GNU Prolog Go Haskell Haxe Io Java Javascript Julia Lua Matlab mruby Nim Node.js Objective-C OCaml Pascal Perl PHP Pure

Javaweb——Spring Boot 系列(15)与非关系型数据库交互

折月煮酒 提交于 2020-02-13 02:18:58
与非关系型数据库交互 一、非关系型数据库 1、MongoDB 2、Redis 二、Spring Boot 对 MongoDB 和 Redis 的支持 1、对 MongoDB 的支持 2、对 Redis 的支持 三、MongoDB 项目测试 1、数据库准备 2、新建项目 3、准备领域模型 4、数据访问接口和视图层控制器 5、运行测试 四、Redis 项目测试 1、数据库准备 2、新建项目 3、领域模型 4、Repository 5、自定义 Serializer 6、Controller 7、测试运行 一、非关系型数据库 目前的数据库都可分为关系型数据库和非关系型数据库,前者严格按照关系数学对数据库进行设计和实现,后者则不是如此。 对不使用关系作为数据管理的数据库管理系统都可以统称为 NoSQL,典型特征就是不使用 SQL 语句作为查询语言,数据存储也不是固定的表、字段。 在关系数据库中,不允许表中有表,但是在非关系数据库中则可以有。 NoSQL 数据库根据存储类型的不同可分为:文档存储型,代表有 MongoDB;图形关系存储型,代表有 Neo4j;键值对存储型,代表是 Redis。 考虑到图形比较消耗资源(内存),本文只以 MongoDB 和 Redis 作为后台数据库测试数据交互。 1、MongoDB MongoDB 基于文档存储数据,面向对象的思想,每一条数据记录都是文档的对象。

MongoDB 使用B树

你说的曾经没有我的故事 提交于 2020-02-10 18:13:49
概述 MongoDB 是一个通用的、面向文档的分布式数据库[^1],这是官方对 MongoDB 介绍。区别于传统的关系型数据库 MySQL、Oracle 和 SQL Server,MongoDB 最重要的一个特点就是 『面向文档』 ,由于数据存储方式的不同,对外提供的接口不再是被大家熟知的 SQL,所以被划分成了 NoSQL,NoSQL 是相对 SQL 而言的,很多我们耳熟能详的存储系统都被划分成了 NoSQL,例如:Redis、DynamoDB[^2] 和 Elasticsearch 等。 NoSQL 经常被理解成没有 SQL(Non-SQL)或者非关系型(Non-Relational)[^3],不过也有人将其理解成不只是 SQL(Not Only SQL)[^4],深挖这个词的含义和起源可能没有太多意义,这种二次解读很多时候都是为营销服务的,我们只需要知道 MongoDB 对数据的存储方式与传统的关系型数据库完全不同。 MongoDB 的架构与 MySQL 非常类似,它们底层都使用了可插拔的存储引擎以满足用户的不同需求,用户可以根据数据特征选择不同的存储引擎,最新版本的 MongoDB 使用了 WiredTiger 作为默认的存储引擎[^5]。 作为 MongoDB 默认的存储引擎,WiredTiger 使用 B 树作为索引底层的数据结构,但是除了 B 树之外,它还支持 LSM

[NoSQL]-mongodb-分片

不羁岁月 提交于 2020-02-09 13:05:24
第1章 分片的概念 1.有了副本集,为什么还需要分片? 副本集资源利用率不高 分片可以提高资源利用率 2.分片的缺点 理想情况下需要机器比较多 配置和运维变得复杂且困难 提前规划好特别重要,一旦建立后在想改变架构变得很困难 第2章 分片工作流程 1.路由服务mongos 路由服务,提供代理,替用户去向后请求shard分片的数据 2.数据节点shard 负责处理数据的节点,每个shard都是分片集群的一部分 3.分片配置信息服务器config 保存数据分配在哪个shard上 保存所有shard的配置信 提供给mongos查询服务 4.片键 数据存放到哪个shard的区分规则 片键就是索引 选择片键的依据: 能够被经常访问到的字段 索引字段基数够大 第3章 分片的分类 1.区间片键 id name host sex 1 zhang SH boy 2 ya BJ boy 3 yaya SZ girl 如果以id作为片键: id 1-100 shard1 100-200 shard2 200-300 shard3 300-+无穷 shard4 如果以host作为片键: SH shard1 BJ shard2 SZ shard3 2.hash片键: 特点:足够平均,足够随机 id name host sex 1 zhang SH boy 2 ya BJ boy 3 yaya SZ girl

Sql Or NoSql,看完这一篇你就都懂了

大憨熊 提交于 2020-02-09 01:38:54
你是否在为系统的数据库来一波大流量就几乎打满CPU,日常CPU居高不下烦恼? 你是否在各种NoSql间纠结不定,到底该选用那种最好? 今天的你就是昨天的我,这也是写这篇文章的初衷。 这篇文章是我好几个月来一直想写的一篇文章,也是一直想学习的一个内容,作为互联网从业人员,我 们要知道关系型数据库(MySql、Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要。 同时也由于过去一段时间的工作经历,对这块有了一些更多的思考,想通过自己的总结把这块写出来分享给大家。 结构化、非结构化和半结构化数据 文章的开始,聊一下结构化数据、非结构化数据与半结构化数据,因为数据特点的不同,将在技术上直接影响存储引擎的选型。 首先是结构化数据,根据定义结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。例如: 因此关系型数据库完美契合结构化数据的特点,关系型数据库也是关系型数据最主要的存储与管理引擎。 非结构化数据, 指的是数据结构不规则或不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现的数据,例如办公文档(Word)、文本、图片、HTML、各类报表、视频音频等。 介于结构化与非结构化数据之间的数据就是半结构化数据了

Redis简介及安装教程(Windows)

妖精的绣舞 提交于 2020-02-09 01:36:58
一、NoSQL 1.1 什么是NoSQL NoSQL(Not Only SQL),意思是不仅仅是SQL,是一项全新的数据库理念,泛指非关系型的数据库。 1.2 为什么需要NoSQL 对数据库高并发读写的需求 对海量数据的高效率存储和访问的需求 如果使用关系型数据库,在一个拥有几亿条数据的表中进行sql查询效率是是否低下的。 对数据库的高可扩展性和高可用性的需求 如果使用关系型数据库,那么例如现在数据库中存储着几百万条数据,但是由于需求的变更需要修改表的结构,这显然是行不通的。 NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其时大数据应用难题。 1.3 NoSQL的优点 易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。 大数据量,高性能 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。 灵活的数据模型 NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。 高可用 NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。 1.4 NoSQL数据库分类

白面系列 redis

僤鯓⒐⒋嵵緔 提交于 2020-02-08 17:19:11
redis是Key-Value数据库,和Memcached类似。value可以是多种类型,如Strings, Lists, Hashes, Sets 及 Ordered Sets等。 redis一个牛逼的地方在于,它的性能极高!读的速度是110000次/s,写的速度是81000次/s !高性能意味着支持高并发。 redis数据是存在内存中的,不过会周期性的把数据存到磁盘中,并在此基础上实现主从同步。这样就支持了数据的持久化。 高性能+数据持久化,这就是要使用redis的原因。这种基于内存的数据库和数据持久化的技术称为NoSQL技术,除了redis还有mongo。 redis常常用作缓存。 参考: https://www.jianshu.com/p/56999f2b8e3b 版权申明:本文为博主原创文章,转载请保留原文链接及作者。 来源: https://www.cnblogs.com/df888/p/12283860.html

Redis介绍

ぐ巨炮叔叔 提交于 2020-02-08 08:03:26
什么是NoSql 为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。 NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。 NoSql的分类 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用:内容缓存,主要用于处理大量数据的高访问负载。 数据模型:一系列键值对 优势:快速查询 劣势:存储的数据缺少结构化 列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限 文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型:一系列键值对 优势:数据结构要求不严格 劣势:查询性能不高,而且缺乏统一的查询语法 图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构 优势:利用图结构相关算法。 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

Redis(一)

陌路散爱 提交于 2020-02-08 07:59:02
文章目录 Redis介绍 安装 配置文件 与python交互 Redis介绍 内存型数据库 特点 开源 ,使用C编写。 跨平台 ,支持多种编程语言(C C++ Python Java PHP … )。 高效性 ,基于内存,读写速度快,高性能的Key-Value的NoSQL数据库。 支持多种数据类型 ,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets 等等。 稳定性 ,redis支持各种架构,主从复制,哨兵模式,redis集群。 单进程单线程 附加功能 支持持久化:将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复。 过期键功能:为键设置一个过期时间,让它在指定时间内自动删除。 <节省内存空间>验证码,音乐播放器,日播放排名,过期自动删除。 轻事务功能:原子的执行多个操作,对每一条数据操作要么成功,要么失败。 主从复制 Sentinel哨兵 与其他数据库对比 MySQL : 关系型数据库,存储基于磁盘,慢。 MongoDB:键值对文档型数据库,值为类似JSON文档,数据结构相对单一。 NoSQL数据库,数据主要是存储在内存当中,如果内存不够,数据可以落地到磁盘里面去,而且MongoDB支持sql语句的查询,是最像关系型数据库的非关系型数据库 。 Redis的诞生是为了解决什么问题?? 解决硬盘IO带来的性能瓶颈 。

Can mongodb aggregation be used to create auto-increment id?

大城市里の小女人 提交于 2020-02-08 02:33:21
问题 I've found here https://stackoverflow.com/a/60052210/10116440 that we can use aggregation to count the number of documents in a query. Can I, in the same aggregation pipeline, count the number of documents and then create a document with autoIncrementId = totalNumberOfDocuments + 1 ? 来源: https://stackoverflow.com/questions/60064892/can-mongodb-aggregation-be-used-to-create-auto-increment-id