nosql

使用反应式关系数据库连接规范R2DBC操作MySQL数据库

有些话、适合烂在心里 提交于 2020-08-11 10:57:06
1. 简介 三月份已经介绍过 R2DBC ,它是一种异步的、非阻塞的关系式数据库连接规范。尽管一些 NoSQL 数据库供应商为其数据库提供了反应式数据库客户端,但对于大多数项目而言,迁移到 NoSQL 并不是一个理想的选择。这促使了一个通用的响应式关系数据库连接规范的诞生。 作为拥有庞大用户群的关系式数据库 MySQL 也有了反应式驱动,不过并不是官方的。但是 Spring 官方将其纳入了依赖池,说明该类库的质量并不低。所以今天就尝尝鲜,试一下使用 R2DBC 连接 MySQL 。 2. 环境依赖 基于 Spring Boot 2.3.1 和 Spring Data R2DBC ,还有反应式Web框架 Webflux ,同时也要依赖 r2dbc-mysql 库,所有的 Maven 依赖为: <!--r2dbc mysql 库--> <dependency> <groupId>dev.miku</groupId> <artifactId>r2dbc-mysql</artifactId> </dependency> <!--Spring r2dbc 抽象层--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r2dbc</artifactId>

MongoDB笔记整理

青春壹個敷衍的年華 提交于 2020-08-11 09:33:37
1、MongoDB简介 1.1、什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存储比较复杂的数据类型。 对于数据量较大且价值较低的数据,可以使用mongodb减轻mysql的压力 MongoDB 的官方网站地址是: http://www.mongodb.org/ 1.2、MongoDB体系结构 MongoDB 的逻辑结构是一种层次结构。主要由: 文档(document) 、 集合(collection) 、 数据库(database) 这三部分组成的。逻辑结构是面 向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。 (1)MongoDB 的文档(document),相当于关系数据库中的一行记录。 (2)多个文档组成一个集合(collection),相当于关系数据库的表。 (3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。 (4)一个 MongoDB 实例支持多个数据库(database)。 文档(document)、集合(collection)、数据库(database)的层次结构如下图:

说说IO(一)-IO的分层

≡放荡痞女 提交于 2020-08-11 07:16:35
IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。 IO系统的分层: 1. 三层结构 上图层次比较多,但总的就是三部分。磁盘(存储)、VM(卷管理)和文件系统。专有名词不好理解,打个比方说:磁盘就相当于一块待用的空地;LVM相当于空地上的围墙(把空地划分成多个部分);文件系统则相当于每块空地上建的楼房(决定了有多少房间、房屋编号如何,能容纳多少人住);而房子里面住的人,则相当于系统里面存的数据。 - 文件系统—数据如何存放? 对应了上图的FileSystem和Buffer Cache。 FileSystem(文件系统):解决了空间管理的问题,即:数据如何存放、读取。 BufferCache:解决数据缓冲的问题。对读,进行cache,即:缓存经常要用到的数据;对写,进行buffer,缓冲一定数据以后,一次性进行写入。 - VM—磁盘空间不足了怎么办? 对应上图的Vol Mgmt。 VM其实跟IO没有必然联系。他是处于文件系统和磁盘(存储)中间的一层。VM屏蔽了底层磁盘对上层文件系统的影响。当没有VM的时候,文件系统直接使用存储上的地址空间

聊聊微服务架构及分布式事务解决方案!

与世无争的帅哥 提交于 2020-08-10 17:59:14
作者:伈情的博客 http://nickid.cn/2017/04/分布式事务/ 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。 什么是事务 事务(Transaction)及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomicity): 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent): 在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。 隔离性(Isoation): 数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。 持久性(Durabe): 事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。 典型场景:银行转账业务 例如:李雷账户中有500块钱

程序员修神之路--分布式系统设计理念这么难学?

China☆狼群 提交于 2020-08-10 17:13:46
点击“蓝字”关注我们吧 福利: 有件小事想和大家说一下 菜菜哥,问你个问题,为什么现在的系统都设计为分布式系统呢? 这个问题问得好,就像为什么程序员会慢慢脱发一样神奇 01 PART 分布式系统 身为二十一世纪的一名程序员,没听说过分布式系统就显得自己好像没有女票一样尴尬。无论是出去面试跟面试官吹水,还是在工作中和同事吹水,分布式系统永远是你显得高人一等的筹码。分布式系统已经诞生了好几十年,说起来比我们八零后程序员好要老成,随着现代互联网的崛起,对于系统在性能,可靠性上的要求大大提高。 分布式系统的定义其实很简单,也很抽象:任何由处于不同物理位置的多个进程提供相同服务的系统都可以称之为分布式系统,退一万步讲,同一台服务器上的不同进程也可以组成分布式系统 分布式系统的首要目标是提高系统的整体性能,但不仅限于吞吐量,可靠性,响应时间,数据一致性等,其中提高性能指标是最重要的。如果最终设计出来的分布式系统占用了更多的资源却还比不上单机的性能,那这个分布式系统是失败的,理论上没有存在的价值 一个分布式系统的整体性能提高并不是单单依靠扩展来实现,提高单机的处理性能仍然很重要,一个把单机性能发挥到极致的分布式系统,在同等性能的需求下,采用的资源要远远小于其他系统。 0 2 PART 分布式系统痛点 一个好的分布式系统在性能方面要远超单机系统,但是在数据行为方面要表现的和单机系统一样优秀

Redis介绍

亡梦爱人 提交于 2020-08-10 03:35:50
一、简介 Redis 它的英文全名是 Remote Dictionary Server ,翻译成中文叫做远程字典服务。是由C语言编写的,遵守BSD协议,完全开源免费的一款NoSql数据库。 BSD是" Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。 BSD 开源协议 是一个给于使用者很大自由的协议。可以自由的使用,修改 源代码 ,也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 2. 如果 再发布 的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发 商业软件 发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。 二、redis特点 redis是一个高性能的key-value数据库 redis性能极高,一般情况下

一文讲透数据库,以后别说你不懂数据库!

妖精的绣舞 提交于 2020-08-10 02:11:00
“数据分析需要懂数据库的知识吗?” 李老头最近经常听到这样的问题,很多新人都觉得如果自己只做业务,不走技术线,是不是就可以不用学习数据库了?是不是面试的时候就不需要准备了?毕竟很多新人刚进公司,一看到数据库里各种表的复杂链接方式,就开始犯起头疼了,更有甚者连SQL与数据库的区别都不知道,数据仓库这些概念就更不用提了。 然而,让很多人失望的是,数据库知识是我在面试新人时最常问的问题,没有之一。 一、数据分析需要懂数据库吗 对数据库的了解程度,要看你定位在数据分析的哪一种层次,我见过一些数据分析人员不懂数据库,都是 基于 Excel 的文件源做数据分析,他们更擅长业务 。但是,他们通常情况下必须依赖于 IT 部门的支持,需要 IT 部门提供一些基本的分析数据。凭借对业务的理解,对业务数据的理解也一样可以做好数据分析工作。 也有一类数据分析人员,本身就是从数据库、商业智能BI的角色转向纯粹的数据分析人员,通过对业务的理解加上数据处理的技能和知识在分析领域也可以做的很好。 他们的一大优点就是在很大程度上不需要过度依赖IT部门,给他们一定的权限就可以自己动手 直接面对统一的数据源做数据分析 ,有时一条SQL就是数据分析的一个环节。 所以,作为数据分析人员,个人觉得技多不压身,多一种获取不同数据渠道的本领,自然是有好处的。 二、什么是数据库? 首先在了解数据库之前

MySQL 对于千万级的大表要怎么优化?

走远了吗. 提交于 2020-08-10 00:45:00
首先采用Mysql存储千亿级的数据,确实是一项非常大的挑战。Mysql单表确实可以存储10亿级的数据,只是这个时候性能非常差,项目中大量的实验证明,Mysql单表容量在500万左右,性能处于最佳状态。 针对大表的优化,主要是通过数据库分库分表来解决, 目前比较普遍的方案有三个:分区,分库分表,NoSql/NewSql。 实际项目中,这三种方案是结合的,目前绝大部分系统的核心数据都是以RDBMS存储为主,NoSql/NewSql存储为辅。 分区 首先来了解一下分区方案。 分区表是由多个相关的底层表实现的。这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引。这个方案对用户屏蔽了sharding的细节,即使查询条件没有sharding column,它也能正常工作(只是这时候性能一般)。 不过它的缺点很明显: 很多的资源都受到单机的限制,例如连接数,网络吞吐等。如何进行分区,在实际应用中是一个非常关键的要素之一。 下面开始举例: 以客户信息为例,客户数据量5000万加,项目背景要求保存客户的银行卡绑定关系,客户的证件绑定关系,以及客户绑定的业务信息。 此业务背景下,该如何设计数据库呢。项目一期的时候,我们建立了一张客户业务绑定关系表

初始MySQL

[亡魂溺海] 提交于 2020-08-09 22:34:49
初始MySQL 为什么要学习数据库? 岗位技能需求 存储数据的方法 程序、网站中,需要长久保存大量数据 数据库是几乎软件体系中最核心的一个存在 什么是数据库? 数据库(Database)是:按照数据结构来组织、存储和管理数据的仓库。 数据库总览 关系型数据库(SQL) MySQL、Oracle、SQL Server、SQLite、DB2等等 关系型数据库通过外键关联来建立表与表之间的关系 菲关系型数据库(NoSQL) Redis、MongoDB等 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自 身的属性来决定 什么是RDBMS? 关系数据库管理系统(Relational Database Management System) 特点: 1.数据以表格的形式出现 2.每行为各种记录名称 3.每列为记录名称所对应的数据域 4.许多的行和列组成一张表单 5.若干的表单组成database MySQL简介 小海豚的 官网 概念 : 是现在流行的 开源 的, 免费 的 关系型 数据库 历史 : 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。 特点 : 免费 , 开源数据库 小巧 , 功能齐全 使用便捷 可运行于Windows或Linux操作系统 可适用于中小型甚至大型网站应用 MySQL环境搭建 建议大家使用压缩版,安装快,方便.不复杂

聊聊微服务架构及分布式事务解决方案!

无人久伴 提交于 2020-08-09 21:45:17
作者:伈情的博客 http://nickid.cn/2017/04/分布式事务/ 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。 什么是事务 事务(Transaction)及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomicity): 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent): 在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。 隔离性(Isoation): 数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。 持久性(Durabe): 事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。 典型场景:银行转账业务 例如:李雷账户中有500块钱