-
RedisJson横空出世
近期官网给出了RedisJson(RedisSearch)的性能测试报告,可谓碾压其他NoSQL,下面是核心的报告内容,先上结论:对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12...
-
数据库敏感数据加密实现方案
背景数据库明文存储,诸如内部高权用户或侵入数据库服务器的黑客,都可以毫无阻碍地访问数据库的重要数据,一些敏感数据在存储期间的机密性并不能得到有效的保障。根据信息安全的目标,需要对应用生产数据加密,达到满足安全要求,预防存储层明文泄密,实现自主可控安全。总体思路数据库层存储敏感字段为加密,展现层传递应用层为明文传输,应用层接收到明文数据,通过加密应用实现数据加密,实现数据加密存储...
-
MySQL数据库,表结构设计的五个维度
一、数据场景1、表结构简介任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的实时分析,MySQL关系型数据库存储结构化数据。数据的存储则需要设计对应的表结构,清楚的表结构,有助于快速开发业务,和理解系统。表结构的设计通常从下面几个方面考虑:业务场景、设计规范、表结构、字段属性、数据管理。2、用户场景例如存储用户基础信...
-
菜鸟积分系统稳定性建设 - 分库分表&百亿级数据迁移
一 前言拆库&数据迁移说白了,考验的不是一个人的技术功底,而是一个人干活的细致程度,以及抗压能力。无论在哪个公司,数据库迁移的机会都不会太多,因此,我也是非常珍惜这次历练,用阿里的一句老话来说就是 “因人成事,借事修人”。写这篇文章的目的主要是自己进行一个总结,也希望能给需要的同学们一些参考。二 背景在星爷的《大话西游》中有一句非常出名的台词:“曾经有一份真挚的感情摆在...
-
我是如何设计短域名服务的,欢迎大家吐槽
今天刚收到一个短信,里面就有一个短域名。这个短域名的目的很简单,为了在发短信的时候能省点钱,并且让用户体验不要那么糟糕,动不动发一个几百个字符的URL,小白用户一脸懵逼。其实短域名的原理非常简单,当你访问这个段域名的时候,短域名服务器会给你重定向到到真实的URL,浏览器会自动跳转到这个真实的URL。那么如何设计这样一个短域名服务呢?下面谈谈我个人的设想。第一个需要解决的问题,是...
-
MySQL数据库大森林:B树、B+树、二叉树、红黑树
1、二叉树:每个节点最多只有两个子树的树结构2、B树和B+树2.1、区别1)B+树只有叶子节点会存储指针,B树所有节点都带2)B+树叶子节点存储了所有数据,B树在内部节点出现的数据不会出现在叶子节点3)B+树所有叶子节点都是通过指针连在一起,B树不是2.2、B+树优点1)内部节点不存储指针,使得一个内部节点中可以容纳更多的数据2)叶子节点通过指针连在一起范围扫描很方便,B树就要...
-
高并发,你真的理解透彻了吗?
高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多。大概分成这样几类:1、对数据化的指标没有概念:不清楚选择...
-
基于 Mysql 实现一个简易版搜索引擎
前言前段时间,因为项目需求,需要根据关键词搜索聊天记录,这不就是一个搜索引擎的功能吗? 于是我第一时间想到的就是 ElasticSearch 分布式搜索引擎,但是由于一些原因,公司的服务器资源比较紧张,没有额外的机器去部署一套 ElasticSearch 服务,而且上线时间也比较紧张,数据量也不大,然后就想到了 Mysql 的全文索引。简介其实 Mysql 很早就支持全文索引了...
-
MySQL 时间类型 datetime、bigint、timestamp选哪个?很多人答错了
数据库中可以用datetime、bigint、timestamp来表示时间,那么选择什么类型来存储时间比较合适呢?前期数据准备通过程序往数据库插入50w数据数据表:CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time_date` datetime NOT NULL, `time_time...
-
MongoDB 5.0 新特性速览
前言:7 月 13 号, MongoDB 发布了大版本 5.0。本文由社区成员肖贝贝在14号发布于知乎上,他选择了一些亮眼的特性介绍给大家。文末我们还给大家介绍了两个MongoDB岗位,以及MongoDB 5.0 新特性在线研讨会入口,欢迎关注!时序集合: 版本核心功能在创建集合时, 可以指定此集合为时序集合, 一个创建命令如下: db.createCollection( ...
-
基于spring-data 实现mongodb changestream
最近项目要求对mongodb的数据变更操作记录操作日志,首先想到的是基于spring的AOP对变更的接口进行拦截处理,由于调用接口的点很多不是很方便的去梳理,考虑使用mongodb的CDC机制,实时监控数据的变更。首先是springboot集成mongodb,mongdb需要是3.6以上的版本才能支持changestream<parent> <grou...
-
面试官:你说说一条更新SQL的执行过程?
在上一篇《面试官:你说说一条查询SQL的执行过程?》中描述了Mysql的架构分层,通过解析器、优化器和执行引擎完成一条SQL查询的过程,那这一篇续上继续说明一条更新SQL的执行过程。对于一个SQL语句的更新来说,前面的流程都可以说类似的,通过解析器进行语法分析,优化器优化,执行引擎去执行,这个都没有什么问题,重点在于多了一点东西,那就是redo_log、undo_log和bin...
-
基于Redis消息的订阅发布应用场景
基于Redis消息的订阅发布应用场景1.应用背景在物联网采集管控系统中,前后端隔离的情况下,前端通过表单(比如按钮,开关,表格等)输入数据到数据库(比如MySql,通过WEBAPI服务端输入),然后采集控制端到数据库里去扫表取数据,将数据下发给物联网络中的终端设备(比如风扇控制板),从而来控制风扇的开跟关。2.困境采集控制端需要到数据库中去扫表。这个扫表操作会带来几个问题:2....
-
Ubuntu搭建Mysql+Keepalived高可用(双主热备)
Mysql5.5双机热备实现方案安装两台Mysql安装Mysql5.5sudo apt-get update apt-get install aptitude aptitude install mysql-server-5.5 或 sudo apt-cache search mariadb-server apt-get install -y mariadb-server-5....
-
线上MySQL读写分离,出现写完读不到问题如何解决
今天我们来详细了解一下主从同步延迟时读写分离发生写后读不到的问题,依次讲解问题出现的原因,解决策略以及 Sharding-jdbc、MyCat 和 MaxScale 等开源数据库中间件具体的实现方案。写后读不到问题MySQL 经典的一主两从三节点架构是大多数创业公司初期使用的主流数据存储方案之一,主节点处理写操作,两个从节点处理读操作,分摊了主库的压力。但是,有时候可能会遇到执...
-
MySQL索引是怎么支撑千万级表的快速查找?
前言在 MySQL 官方提到,改善操作性能的最佳方法 SELECT 在查询中测试的一个或多个列上创建索引。索引条目的作用类似于指向表行的指针,从而使查询可以快速确定哪些行与WHERE子句中的条件匹配,并检索这些行的其他列值。所有MySQL数据类型都可以建立索引。尽管可能会为查询中使用的每个可能的列创建索引,但不必要的索引会浪费空间和时间,使MySQL难以确定要使用的索引。索引还...
-
MySQL 深入学习总结
1.数据库基础1.1 MySQL 架构和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎,各层介绍:1.1.1 连接层最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于...
-
MySQL常用的4种主从复制架构
目录一主多从复制架构多级复制架构双主(Dual Master)复制架构多源(Multi-Source)复制架构如何优化主从延迟问题?复制的4中常见架构有一主多从复制架构、多级复制架构、双主(Dual Master)复制架构和多源(Multi-Source)复制架构。一主多从复制架构在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量的对实时性要求不...
-
MongoDB 5.0 正式发布,新增时序集合功能
MongoDB 5.0 正式发布,该版本部分更新内容如下:时间序列集合MongoDB 5.0 引入了时间序列集合,它有效地存储了一段时期内的测量序列。与普通集合相比,在时间序列集合中存储时间序列数据可以提高查询效率,并减少数据和索引的磁盘使用。聚合新的聚合操作符MongoDB 5.0 引入了以下聚合操作:$count: $count 在现有管道 $group 阶段和新的 Mon...
-
初探 Redis 客户端 Lettuce:真香
一、Lettuce 是啥?一次技术讨论会上,大家说起 Redis 的 Java 客户端哪家强,我第一时间毫不犹豫地喊出 "Jedis, YES!"“Jedis 可是官方客户端,用起来直接省事,公司中间件都用它。除了 Jedis 外难道还有第二个能打的?”我直接扔出王炸。刚学 Spring 的小张听了不服:“SpringDataRedis 都用 RedisTemplate!Jed...
-
MySQL不同版本多实例部署
1 背景介绍我们在数据库运维的过程中.会遇到不同版本的数据库部署需求.同时测试环境数据库需求更是不同.有时为了节省资源.我们需要进行多实例的部署.或者在我们自己学习的过程中也需要进行多实例的部署..比如搭建各种MySQL的集群(mha,PXC,Xenon).这篇文章我将介绍多版本多实例的部署.2 部署介绍多版本多实例版本介绍:下载对应版本MySQL2.1 软件下载下载地址:ht...
-
DorisDB简介
DorisDB简介本文通过对DorisDB进行概要描述,从产品简介、发展历程、架构介绍、产品特性、使用场景、产品版本、横向压测对比、用户&案例、后续发展几个层面进行简要说明,部分内容引用。因接触doris时间较短,文中错误,欢迎勘正。1. 产品简介 一直以来,一众大厂分布式数据库产品层出不穷,唯有BAT中的百度,一直没有什么大的动作。然而,我还是错了,先给百度道个歉。只...
-
It looks like you are trying to access MongoDB over HTTP on the native driver port.
第一次安装MongoDB,就遇到一个小白的问题,记录一下。 It looks like you are trying to access MongoDB over HTTP on the native driver port. 解决办法: MongoDB的HTTP服务没有开启,需要开启。
-
动态表单存储设计
前言Flowable, Activiti 等开源解决方案所提供的表单引擎是没有业务表单数据持久化的功能(即自动创建表,将表单数据持久化功能),只提供动态表单创建以及渲染功能。目前来看表单引擎服务主要功能如下:动态表单配置以及渲染(主要在于前端实现)表单数据库持久化以下是目前实现业务表单数据持久化的几种方案:以下方案都以请假流程的表单为例,比较简单就请假天数(days)以及请假理...
-
centos7 安装 Mysql 5.7.27,详细完整教程
1. 下载 MySQL yum包wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm2.安装MySQL源rpm -Uvh mysql57-community-release-el7-10.noarch.rpm3.安装MySQL服务端,需要等待一些时间yum install -y mysql-...
-
Navicat用久了试试这个炫酷的mysql连接工具,如丝滑般柔顺
背景web开发者都知道,数据对我们来说是最重要的,所有的curd都是针对于数据库。连接MySQL我们通常都是用Navicat,但是每次用都需要破解,并且感觉经常卡顿,并且提示功能感觉不准确,有没有更好的工具,我们可以试下HeidiSQL。推荐理由1 完全开源免费,不存在收费版本(不开源不推荐)2 查询速度很快,不会卡顿,Navicat查询比较卡顿3 界面炫酷(关键字高亮,记录高...
-
并发的时候分布式锁setnx细节
如果出现网络延迟的情况下,多个请求阻塞,那么恶意攻击就可以全部请求领取接口成功,而针对这种做法,我们使用 setnx 来解决,确保只有一个请求可以进入接口请求。public String receiveGitf(int activityId,int giftId,String uid){ // isExist判断活动是否存在,内部包括redis和数据库请求,省略...
-
数据库事务锁详解
前言上篇说到数据库事务中的特性ACID和4个隔离级别,今儿就来看一下事务中的锁。MySQL中的锁锁是MySQL在服务器层和存储引擎层的并发控制,锁可以保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素MySQL有三种级别的锁:「表级锁、行级锁、页级锁」表级锁行级锁业级锁特点开销小、加锁快开销大、加锁慢加锁时间介于其余两者之间是否会死锁否是是并发度粒...
-
分库分表中间件的高可用实践
分库分表中间件的高可用实践前言分库分表中间件在我们一年多的锤炼下,基本解决了可用性和高性能的问题(只能说基本,肯定还有隐藏的坑要填),问题自然而然的就聚焦于高可用。本文就阐述了我们在这方面做出的一些工作。哪些高可用的问题作为一个无状态的中间件,高可用问题并没有那么困难。但是尽量减少不可用期间的流量损失,还是需要一定的工作的。这些流量损失主要分布在:(1)某台中间件所在的物理机突...
-
CentOS7安装MySQL8.0图文教程
登录主机,然后进行下载第一步:在mysql官网下载源文件第二步:Select Operating System: 选择 Red Hat ,CentOS 是基于红帽的,Select OS Version: 选择 linux 7第三步:选择 RPM Bundle 点击 Download第四步:点击 No thanks, just start my download. 进行下载第五步...