
高性能数据处理、NoSQL、分库分表
在互联网项目中,数据量早已达到亿级的今天,对于数据的存储以及提升查询效率已经是我们必须要面对的一个问题。本专栏主要包含了对于高性能数据处理的解决方案,讲解了两种常见的内存型数据库实现热数据的高速缓存,用于提升热数据的查询效率。通过MyCat技术实现对关系型数据库的分库分表,读写分离的操作
地球村公民
这个作者很懒,什么都没留下…
展开
-
Java MyCat:(八)MyCat 的使用-MyCat 分库
MyCat 的使用-MyCat 分库1.分片规则1.1 auto-sharding-long 范围约定1.2 crc32slot 规则2.配置分片规则需要注意的地方3.配置分库3.1 需求3.2 创建数据库3.3 修改 Schema.xml3.4 测试4.注意1.分片规则1.1 auto-sharding-long 范围约定以 500 万为单位,实现分片规则.逻辑库 A 对应 dataNode - db1 和 db2. 1-500 万保存在 db1 中, 500 万零 1 到 1000 万保存在原创 2020-09-24 16:28:20 · 379 阅读 · 0 评论 -
Java MyCat:(七)MyCat 的使用-实现读写分离
MyCat 的使用-实现读写分离1.配置读写分离1.1 Schema.xml1.2 Server.xml1.3 测试读写分离1.3.1 启动 Mycat 命令1.3.2 停止命令1.3.3 重启命令1.3.4 查看 MyCat 状态1.3.5 访问方式1.3.6 命令行访问方式1.3.7 查看 Mycat 日志1.3.8 balance1.配置读写分离1.1 Schema.xml<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "原创 2020-09-24 16:21:52 · 469 阅读 · 0 评论 -
Java MyCat:(六)MyCat 的使用-MyCat 配置文件
MyCat 的使用-MyCat 配置文件1.server.xml1.1 配置 Mycat 服务信息1.2 配置权限2.schema.xml2.1 用于定义逻辑库和逻辑表的配置文件2.2 节点与属性介绍2.2.1 标签 schema2.2.1.1 属性 name2.2.1.2 属性 checkSQLschema2.2.1.3 sqlMaxLimit2.2.2 标签 table2.2.2.1 属性 name2.2.2.2 属性 dataNode2.2.2.3 属性 rule2.2.3 标签 dataNode2.原创 2020-09-24 16:14:38 · 849 阅读 · 0 评论 -
Java MyCat:(五)MyCat 的使用-安装 MyCat
MyCat 的使用-安装 MyCat1.在主数据库和从数据库都需要完成1.1 放开 3306 端口1.2 保证 root 用户可以被 mycat 访问2.解压上传的 Mycat 压缩包3.将解压后的文件夹复制到/usr/local/mycat4.MyCat 目录介绍1.在主数据库和从数据库都需要完成1.1 放开 3306 端口1.2 保证 root 用户可以被 mycat 访问在 Mycat 中通过 Master 数据库的 root 用户访问 Master 数据库grant all privi原创 2020-09-24 15:46:02 · 211 阅读 · 0 评论 -
Java MyCat:(四)MyCat 的使用-MySql 的主从模式搭建
MySql 的主从模式搭建1.安装 MySQL2.Master[主库]配置2.1 修改 Master 配置文件2.2 server_id2.3 log_bin2.4 重启 MySQL2.5 配置 Master2.5.1 访问 MySQL2.5.2 创建用户2.5.3 查看用户2.5.4 查看 Master 信息2.5.5 关闭防火墙或在防火墙中开放 3306 端口3.Slave[从库]配置3.1 修改 Slave 配置文件3.2 server_id3.3 重启 MySQL 服务3.4 配置 Slave3.4原创 2020-09-24 15:40:41 · 651 阅读 · 0 评论 -
Java MyCat:(三)MyCat 的使用-读写分离以及主从备份概念介绍
MyCat 的使用-读写分离以及主从备份概念介绍1.读写分离2.主从备份概念2.1 MySQL5.5, 5.6 版本后本身支持主从备份2.2 主从备份目的2.2.1 实现主备模式2.2.2 实现读写分离2.3 主从备份效果2.3.1 主库操作同步到备库2.4 主从模式下的逻辑图1.读写分离原理:需要搭建主从模式,让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理 SELECT 查询操作。Mycat 配合数据库本身的复制功能,可原创 2020-09-24 15:20:07 · 392 阅读 · 0 评论 -
Java MyCat:(二)MyCat 中的概念
MyCat 中的概念1.切分1.1 纵向切分/垂直切分1.2 横向切分/水平切分2.逻辑库-Schema3.逻辑表-table4.默认端口5.数据主机 - dataHost6.数据节点 - dataNode7.分片规则1.切分逻辑上的切分. 在物理层面,是使用多库[database],多表[table]实现的切分1.1 纵向切分/垂直切分就是把原本存储于一个库的数据存储到多个库上。由于对数据库的读写都是对同一个库进行操作,所以单库并不能解决大规模并发写入的问题。例如,我们会建立定义数据库原创 2020-09-24 15:08:18 · 281 阅读 · 0 评论 -
Java MyCat:(一)MyCat 简介
MyCat 简介1.什么是 MyCat2.使用 Mycat 后的结构图3.使用 Mycat 的优势3.1 数据量级3.2 开源性质3.3 市场应用1.什么是 MyCatMyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议 的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问, 而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数原创 2020-09-24 15:01:06 · 805 阅读 · 0 评论 -
Java MongoDB:(十九)Java 访问 MongoDB-操作文档-21000字匠心巨作
Java 访问 MongoDB-操作文档1.添加文档1.1 添加单个文档1.2 添加多个文档2.更新文档2.1 更新单个文档单个键2.2 更新单个文档多个键2.3 更新多个文档中的单个键2.4 更新多个文档中的多个键2.5 更新文档中的数组3.查询文档3.1 查询全部文档3.2 根据_id 查询文档-$eq3.3 查询多个文档-$gt3.4 查询多个文档-$type3.5 查询多个文档-$in3.6 查询多个文档-$nin3.7 查询多个文档-$regex3.8 逻辑运算符-$and3.9 逻辑运算符-$o原创 2020-09-23 15:27:21 · 329 阅读 · 0 评论 -
Java MongoDB:(十八)Java 访问 MongoDB-操作集合
Java 访问 MongoDB-操作集合1.创建集合2.获取集合3.删除集合1.创建集合//创建集合public static void createCollection(String dbName,String collName){ MongoDatabase database = getDatabase(dbName); database.createCollection(collName);}2.获取集合//获取 MongoDB 中的集合public static MongoCol原创 2020-09-23 14:42:08 · 338 阅读 · 0 评论 -
Java MongoDB:(十七)Java 访问 MongoDB-连接 MongoDB 数据库
Java 访问 MongoDB-连接 MongoDB 数据库1.创建工程2.创建 MongoDB 连接3.创建 MongoDB 的认证连接4.创建 MongoDB 的池连5.创建 MongoDB 的认证池连1.创建工程在 POM 文件中添加 MongoDB 驱动坐标<!--添加 MongoDB 驱动坐标--><dependencies> <dependency> <groupId>org.mongodb</groupId>原创 2020-09-23 14:39:31 · 421 阅读 · 0 评论 -
Java MongoDB:(十六)MongoDB 的文档操作-MongoDB 聚合查询-7100字匠心出品
MongoDB 的文档操作-MongoDB 聚合查询1.求和 - $sum2.条件筛选 - $match3.最大值 - $max4.最小值 - $min5.平均值 - $avg6.统计结果返回数组 - $push7.数组字段拆分 - $unwind8.管道操作8.1 $project-聚合投影约束8.2 $project-字符串处理8.3 $project-算术运算8.4 $project-日期操作8.4.1 MongoDB 中的日期处理8.4.2 $project-日期处理在 MongoDB 中我们可原创 2020-09-23 11:37:53 · 441 阅读 · 0 评论 -
Java MongoDB:(十五)MongoDB 的文档操作-MongoDB 索引-6800字匠心出品
MongoDB 的文档操作-MongoDB 索引1.创建索引2.查看索引2.1 查看集合索引2.2 查看索引键2.3 查看索引大小3.修改索引4.删除索引4.1 删除集合中的指定索引4.2 删除集合中的全部索引5.重建索引6.MongoDB 中的索引类型6.1 单字段索引(Single Field Index)6.2 交叉索引6.3 复合索引(Compound Index)6.4 多 key 索引 (Multikey Index)7.索引额外属性7.1 唯一索引 (unique index)7.2 部分索引原创 2020-09-23 10:19:40 · 852 阅读 · 0 评论 -
Java MongoDB:(十四)MongoDB 的文档操作-MongoDB 排序
MongoDB 的文档操作-MongoDB 排序1.升序排序2.降序排序3.对字符串排序在 MongoDB 中使用 sort() 函数对查询到的文档进行排序,sort() 函数可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。语法格式:db.COLLECTION_NAME.find().sort({排序键:1})1.升序排序查询 size 的值为 number 类型的文档,显示 title,size 的内容,并对 size 做升原创 2020-09-23 09:50:09 · 1040 阅读 · 0 评论 -
Java MongoDB:(十三)MongoDB 的文档操作-Limit 函数与 Skip 函数
MongoDB 的文档操作-Limit 函数与 Skip 函数1.Limit 函数2.Skip 函数1.Limit 函数如果需要在 MongoDB 中读取指定数量的数据记录,可以使用 MongoDB 的 Limit 函数,limit()函数接受一个数字参数,该参数指定从 MongoDB 中读取的记录条数。语法格式:db.COLLECTION_NAME.find().limit(NUMBER)2.Skip 函数我们除了可以使用 limit()函数来读取指定数量的数据外,还可以使用 skip(原创 2020-09-23 09:47:29 · 747 阅读 · 0 评论 -
Java MongoDB:(十二)MongoDB 的文档操作-条件操作符
MongoDB 的文档操作-条件操作符1.$gt2.$lt3.$gte4.$lte5.$eq6.$ne7.$and8.$or9.$ and 与$or 联合使用10.$type 操作符条件操作符用于比较两个表达式并从 mongoDB 集合中获取数据。语法格式:find({键:{操作符:条件}})或者 findOne({键:{操作符:条件}})1.$gt(>) 大于操作符我们可以使用$gt 操作做大于的条件判断。该操作符可以数字或日期进行判断。添加测试数据。查询 size 大于 30原创 2020-09-23 09:42:52 · 319 阅读 · 0 评论 -
Java MongoDB:(十一)MongoDB 的文档操作-查询文档
MongoDB 的文档操作-查询文档1.1find()函数2.findOne()函数3.模糊查询4.投影操作4.1 find()函数投影操作4.2 findOne 函数投影操作1.1find()函数在 MongoDB 中可以使用 find()函数查询文档。语法格式为:find({查询条件(可选)},{指定投影的键(可选)})如果未给定参数则表示查询所有数据。pretty()函数可以使用格式化的方式来显示所有文档。查询 dev 集合中的所有数据并格式化显示。查询 title 为 DataBa原创 2020-09-23 09:31:57 · 708 阅读 · 0 评论 -
Java MongoDB:(十)MongoDB 的文档操作-删除文档
MongoDB 的文档操作-删除文档1.remove()函数2.deleteOne()函数3.deleteMany()函数4.删除集合中的所有文档1.remove()函数使用 remove()函数可删除集合中的指定文档语法格式:remove({指定删除条件},删除参数(可选参数))删除 title 为 Spring data 的文档,可使用该文档的 ObjectId 作为删除条件如果使用的条件在集合中可以匹配多条数据,那么 remove()函数会删除所有满足条件的数据。我们可以在 remove原创 2020-09-23 09:21:29 · 768 阅读 · 0 评论 -
Java MongoDB:(九)MongoDB 的文档操作-更新文档
MongoDB 的文档操作-更新文档1.update 函数2.更新操作符2.1 $set 操作符2.2 $inc 操作符2.3 $unset 操作符2.4 $push 操作符2.5 $pop 操作符2.6 $pull 操作符2.7 $pullAll 操作符2.8 $rename 操作符3.使用 save()函数更新文档MongoDB 通过 update 函数或者 save 函数来更新集合中的文档。1.update 函数update() 函数用于更新已存在的文档。语法格式:db.COLLECTI原创 2020-09-09 23:24:49 · 475 阅读 · 0 评论 -
Java MongoDB:(八)MongoDB 的文档操作-插入文档
MongoDB 的文档操作-插入文档1.插入单个文档1.1 insert 函数1.2 save 函数1.3 insertOne 函数2.插入多个文档2.1 insert 或者 save 函数2.2 insertMany 函数3.通过变量插入文档3.1 通过变量插入单个文档3.2 通过变量插入多个文档1.插入单个文档1.1 insert 函数语法格式为:db.COLLECTION_NAME.insert(document)eg:向dqcgm集合中插入单个文档。db.dqcgm.insert({tit原创 2020-09-09 16:34:44 · 754 阅读 · 0 评论 -
Java MongoDB:(七)MongoDB 的集合操作
MongoDB 的集合操作1.创建集合1.1 使用默认集合1.2 创建不带参数的集合1.3 创建带参数的集合2.查看集合2.1 show collections2.2 show tables3.删除集合MongoDB 中的集合是一组文档的集,相当于关系型数据库中的表1.创建集合MongoDB 使用 db.createCollection()函数来创建集合。语法格式:db.createCollection(name, options)。name: 要创建的集合名称。options: 可选参数原创 2020-09-09 16:18:58 · 945 阅读 · 1 评论 -
Java MongoDB:(六)MongoDB 的数据库操作
MongoDB 的数据库操作1.创建数据库2.查看所有数据库3.删除数据库1.创建数据库在 MongoDB 中创建数据库的命令使用的是 use 命令。该命令有两层含义:切换到指定数据库。如果切换的数据库不存在,则创建该数据库。命令示例:use dqcgmdqcgm 为数据库名2.查看所有数据库我们可以通过 show dbs 命令查看当前 MongoDB 中的所有数据库如果开启了用户认证,则需要先登录方可查看到结果,否则不显示任何信息。如果使用的是具备数据库管理员角色的用户,那么原创 2020-09-09 16:06:46 · 407 阅读 · 0 评论 -
Java MongoDB:(五)MongoDB 的用户与权限管理
MongoDB 的用户与权限管理1.Mongodb 用户权限列表2.MongoDB 用户使用2.1 创建 DB 管理用户2.1.1 切换到 Admin 库2.1.2 查看 admin 中的用户2.1.3 db.createUser 函数2.1.4 创建管理员用户2.1.5 重启 MongoDB2.1.6 使用权限方式启动 MongoDB2.1.7 用户认证2.2 更新用户角色2.2.1 更新角色语法格式2.3 更新用户密码2.3.1 更新密码方式一的语法格式2.3.2 更新密码方式二的语法格式2.4 删除用原创 2020-09-09 16:01:26 · 889 阅读 · 0 评论 -
Java MongoDB:(四)MongoDB 的下载与安装and各类启动与关闭
MongoDB 的下载与安装1.下载 MongoDB2.安装 MongoDB2.1 下载 ForLinux 平台的 MongoDB2.2 Linux 安装2.2.1 将下载的 tgz 包上传到 Linux 环境中2.2.2 解压 tgz 文件2.2.3 移动 MongoDB2.2.4 创建数据库目录3.MongoDB 的启动与关闭3.1 启动 MongoDB3.1.1 前置启动3.1.2 后置启动3.1.3 常见的启动参数3.1.4 通过配置文件加载启动参数3.1.5 配置环境变量3.2 关闭 MongoD原创 2020-09-09 15:40:55 · 279 阅读 · 0 评论 -
Java MongoDB:(三)MongoDB 的数据类型
MongoDB 的数据类型原创 2020-09-09 10:58:13 · 1117 阅读 · 0 评论 -
Java MongoDB:(二)MongoDB 与关系型数据库对比
MongoDB 与关系型数据库对比1.与关系型数据库术语对比2.存储数据对比3.RDBMS 与 MongoDB 对应的术语1.与关系型数据库术语对比SQL术语概念MongoDB术语概念解释说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录/文档columnfiled数据字段/域indexindex索引table joins表连接,MongoDB不支持prim原创 2020-09-09 10:48:14 · 421 阅读 · 0 评论 -
Java MongoDB:(一)MongoDB 简介
MongoDB 简介1.什么是 MongoDB2.什么是 NoSQL3.NoSQL 数据库的分类3.1 键值(Key-Value)存储数据库3.2 列存储数据库3.3 文档型数据库3.4 图形(Graph)数据库1.什么是 MongoDBMongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写。在为 WEB 应用提供可扩展的高性能数据存储解决方案MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似原创 2020-09-09 10:34:07 · 352 阅读 · 0 评论 -
Java Redis:(七)Spring 整合 Jedis-8400字匠心出品
Spring 整合 Jedis1.整合单机版1.1 创建工程1.2 修改 POM 文件添加 Jedis 与 Spring 的坐标1.3 创建 JedisDao 接口与接口实现类1.4 在 Spring 配置文件中整合 Jedis1.5 测试单机版2.整合集群版2.1 添加 JedisDao 实现类。基于 JedisCluster 的实现2.2 在 Spring 配置文件中整合 JedisCluster2.3 测试集群版1.整合单机版1.1 创建工程创建一个Maven工程1.2 修改 POM 文件原创 2020-09-08 17:10:51 · 230 阅读 · 0 评论 -
Java Redis:(六)使用 JedisAPI 操作 Redis
使用 JedisAPI 操作 Redis1.使用 Jedis 操作 Redis 单机版1.1 创建工程1.2 修改 POM 文件添加 Jedis 坐标1.3 测试 Jedis 操作 Redis 单机版1.4 测试使用连接池操作 Redis 单机版2.使用 Jedis 操作 Redis 集群Jedis 集成了 redis 的一些命令操作,封装了对 redis 命令的 Java 客户端1.使用 Jedis 操作 Redis 单机版1.1 创建工程1.2 修改 POM 文件添加 Jedis 坐标&原创 2020-09-08 16:31:00 · 246 阅读 · 0 评论 -
Java Redis:(五)安装 Redis 集群-5300字匠心出品
安装 Redis 集群1.Redis 集群介绍1.1 Redis-Cluster 架构图1.2 Redis-Cluster 选举:容错1.3 Redis-Cluster 数据存储2.安装集群2.1 需求2.2 集群步骤1.Redis 集群介绍Redis3.0 版本之后支持 Cluster。集群要求集群节点中必须要支持主备模式,也就说集中的主节点(Master)至少要有一个从节点(Slave)每一个蓝色的圈都代表着一个 redis 集群中的主节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一原创 2020-09-08 10:22:11 · 137 阅读 · 0 评论 -
Java Redis:(四)Redis 的配置以及持久化方案-12400字匠心巨作
Redis 的配置以及持久化方案1.redis.conf 文件2.Redis 的数据持久化2.1 RDB 方式2.2 AOF 方式1.redis.conf 文件#redis.conf# Redis configuration file example.# ./redis-server /path/to/redis.conf################################## INCLUDES####################################这在你有标准配置模原创 2020-09-06 16:39:00 · 494 阅读 · 0 评论 -
Java Redis:(三)Redis 数据类型
Redis 数据类型1.String(字符串)2.Hash(hash 表)3.List(链表)4.Set(集合)5.SortedSet(有序集合)zset6.Redis 中的其他命令1.String(字符串)Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限示例:redis 127.0.0.1:6379> SET name kevinOKredis 127.0.0.1:6379>原创 2020-09-06 16:06:18 · 234 阅读 · 0 评论 -
Java Redis:(二)安装 Redis 单机版
安装 Redis 单机版第一步 需要在 linux 系统中安装 gcc命令:yum install -y gcc-c++第二步 需要将下载好的 redis 压缩包添加到 linux 服务器中本次测试版本:redis-3.0.0.tar.gzredis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。偶数版本时稳定版建议在生产环境中使用。3.0 版本更新比较大。集成了集群技术第三步 解压压缩包命令:tar -zxvf redis…第四步 编译 redis命令:进入 red原创 2020-09-06 15:43:08 · 165 阅读 · 0 评论 -
Java Redis:(一)Redis 介绍
Redis 介绍1.Redis 简介2.Redis 的特点1.Redis 简介Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。2.Redis 的特点优点:支持多原创 2020-09-06 15:25:23 · 514 阅读 · 0 评论