Other

【软考-中级-其他】03、NoSQL和云计算

其他 NoSQL概述 分类 文档存储数据库:MongoDB 采用BSON格式完成存储数据和网络数据交换 BSON格式:JSON的二进制编码格式 逻辑结构包括:数据库、集合(相当于关系数据库的表)、文档(相当于记录),没有表这种逻辑结构 键值存储数据库:Redis、MemCached(分布式内存对象缓存数据库) Redis 散列结构适用于对对象进行存储 图形存储数据库:Neo4J 列式存储:HBase 内存型数据库 与其他数据库最大的区别是:数据常驻内存 CAP理论 是NoSQL的理论基础 含义:对一个分布式系统,一致性、可用性、分区容忍性(容错性),三个特点最多只能三选二 无原子性 查询模型 结合SQL数据库:将NoSQL数据库拷贝到关系数据库进行查询 分散/集合本地搜索 分布式B+树 前缀哈希表/分布式Trie 特性 NoSQL无需满足ACID特性 只需要满足BASE弱一致性理论,只要求最终一致性 包含:最终一致性、基本可用性、软状态 不包含分区容忍性 NewSQL 新型的关系型数据库管理系统 针对OLTP工作负载,追求提供和NoSQL相同的扩展性能 并仍然保持ACID和SQL等特性 TiDB的节点 包括TiDB/PD/TiKV Server 不包括Data Server 数据分类 结构化数据 非结构化数据:视频 半结构化数据 云计算 部署模式 公有云、私有云、社区云、混合云 不包含虚拟云,只包含虚拟化 虚拟化 类型 Hypervisor模型(VMM作为虚拟操作系统)、属主模型、混合模型 不包括倾斜摸摸西 Google云计算平台 组成 分布式文件系统GSF 并行数据处理模型MapReduce 分布式锁Chubby 结构化数据表BigTable(HBase借鉴) 其中的SSTable采用了LSM-Tree(日志合并树)存储分布 不包括弹性云计算EC2(阿里云)

Shell编程基础

Shell脚本 命令、变量和流程控制语句等有机的结合起来 shell脚本擅长处理纯文本类型的数据,而linux中,几乎所有的配置文件,日志,都是纯文本类型文件 默认shell与版本 常用操作系统的默认shell 1.Linux是Bourne Again shell(bash) 2.Solaris和FreeBSD缺省的是Bourne shell(sh) 3.AIX下是Korn Shell(ksh) 4.HP-UX缺省的是POSIX shell(sh) 升级shell yum install update bash sh与bash;/bin与/usr/bin 脚本书写规范 #1.脚本统一存放目录 #2.选择解释器 #!/bin/bash #!/bin/sh #3.文件名规范 名字要有意义,并且结尾以 .sh 结束 #4.开发的规范和习惯小结 放在统一的目录 脚本以.sh为扩展名 开头指定脚本解释器。 开头加版本版权等信息,可配置~/.vimrc文件自动添加。 脚本不要用中文注释,尽量用英文注释。【目前还做不到,学习中CS英语中】 代码书写优秀习惯 a、成对的内容一次性写出来,防止遗漏,如[ ]、' '、 等 b、[ ]两端要有空格,先输入[ ],退格,输入2个空格,再退格写。 c、流程控制语句一次书写完,再添加内容。(if 条件 ; then 内容;fi)ddd d、通过缩进让代码易读。 f、脚本中的引号都是英文状态下的引号,其他字符也是英文状态。 shell脚本的执行 sh test.

MySQL高级查询(聚合函数与分组查询)

聚合函数:  聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对数据求和、求最大值和最小值、求平均值等等。  聚合函数不能出现在where子句中,这是一种语法错误,聚合函数执行需要一个数据范围,而在where子句执行时还未划出这个范围。  1.sum函数由于求和,只能用于数字类型,字符类型的统计结果为0,日期类型统计结果是毫秒数相加  2.max函数用于获得非空值的最大值。  3.min函数用于获得非空值的最小值。  4.avg函数用于获得非空值的平均值,非数字数据统计结果为0。  5.count(*)用于获得包含空值的记录数,count(列名)用于获得包含非空值的记录数。 #查询所有员工工资的平均值 select avg( sal+ifnull(comm,0) ) as avg from t_emp #查询10,20部门员工的工资总和 select sum(sal) from t_emp where deptno in(10,20); #查询10,20部门中,月收入最高的员工 select max(sal+ifnull(comm,0)) from t_emp where deptno in(10,20); #查询员工名字最长的是几个字符 select max(length(ename)) from t_emp; #查询员工表中所有记录的数量 select count(*) from t_emp; #查询comm字段中非空的记录数量 select count(comm) from t_emp; #查询10和20部门中,底薪超过2000元并且工龄超过15年的员工人数 select count(*) from t_emp where deptno in(10,20) and sal>=2000 and datediff(now(),hiredate)/365>=15; 数据库表的分组查询:  默认情况下汇总函数是对全表范围内的数据做统计,group by子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理。

14、redis sentinel.conf配置文件说明

# 14、redis sentinel.conf配置文件说明 ```Plain Text # Example sentinel.conf # *** IMPORTANT *** # 绑定IP地址 # bind 127.0.0.1 192.168.1.1 # 尽量不要将127.0.0.1放在第一IP # 保护模式(是否禁止外部链接,除绑定的ip地址外) # protected-mode no # port <sentinel-port> # 此Sentinel实例运行的端口 port 26379 # 默认情况下,Redis Sentinel不作为守护程序运行。 如果需要,可以设置为 yes。 daemonize no # 启用守护进程运行后,Redis将在/var/run/redis-sentinel.pid中写入一个pid文件 pidfile /var/run/redis-sentinel.pid # 指定日志文件名。 如果值为空,将强制Sentinel日志标准输出。守护进程下,如果使用标准输出进行日志记录,则日志将发送到/dev/null logfile # sentinel announce-ip <ip> # sentinel announce-port <port> # # 上述两个配置指令在环境中非常有用,因为NAT可以通过非本地地址从外部访问Sentinel。 # # 当提供announce-ip时,Sentinel将在通信中声明指定的IP地址,而不是像通常那样自动检测本地地址。 # # 类似地,当提供announce-port 有效且非零时,Sentinel将宣布指定的TCP端口。 # # 这两个选项不需要一起使用,如果只提供announce-ip,Sentinel将宣告指定的IP和“port”选项指定的服务器端口。 # 如果仅提供announce-port,Sentinel将通告自动检测到的本地IP和指定端口。 # # Example: # # sentinel announce-ip 1.

Redis学习笔记

在Linux系统下,Redis基本操作! 启动命令: redis-server kconfig/redis.conf 检测是否启动成功: ps -ef|grep redis 打开客户端: redis-cli -p 6379 关闭Redis: RedisKey的基本知识: redis默认有十六个数据库,默认使用的是第0个。 查看所有的key: keys * 设置一个key: set key value 查询一个指定的key的值: get key 判断当前的key是否存在: 移动当前的key到指定数据库(后面的数字为指定数据库序号): 设置key 的过期时间以及查看当前key的剩余时间: 查看当前key的类型: 为指定key追加内容: 获取字符串的长度: 自增与自减: 设置步长,指定增量: 字符串范围 range(0 -1 为获取全部字符串范围): 替换指定位置开始的字符串: 设置过期时间同时创建key: 创建一个key的同时判断是否存在,如果不存在即创建成功,否则不会修改原本的value值: 批量创建多个数据: 批量获取多个key的值: msetnx是一个原子性的操作,要是一起成功,要么一起失败: 设置对象: 组合命令getset: * String类似的使用场景:value除了是我们的字符串还可以是我们的数字!比如:计数器、统计多单位的数量、粉丝数、对象缓存存储。

Linux7.9安装MySQL

使用yum方式安装Redhat7.9 MySQL8.0.26(参考菜鸟教程) 下载文件 下载文件 # 可以直接使用wget # 也可以用scp上传到linux scp D:\mysql80-community-release-el7-5.noarch.rpm [email protected]:/opt #输入密码,上传完成 #下载地址 https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm 安装这个包 #在下载目录安装 rpm -ivh mysql80-community-release-el7-5.noarch.rpm 安装 # 安装.update完成后安装mysql-server。系统会自动下载所需安装包.下载比较慢,可能要几个小时 yum update yum install mysql-server Downloading packages:(1/3): mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm (2/3): mysql-community-client-8.0.28-1.el7.x86_64.rpm (3/3): mysql-community-server-8.0.28-1.el7.x8  设置权限 #要设置文件权限 chown -R mysql:mysql /var/lib/mysql/ #初始化 mysqld --initialize # 启动 systemctl start mysqld ### 报错了 Job for mysqld.service failed because the control process exited with error code. See systemctl status mysqld.service and journalctl -xe for details.

Redis数据类型:五大基本数据类型及三种特殊类型

String (字符串类型) String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value。 String类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。 String类型是redis最基本的数据类型,一个redis中字符串value最多可以是512M Hash(哈希,类似 Java里的Map) Redis hash 是一个键值对集合。 Redis hash 是一个String类型的field和value的映射表,hash特别适合用于存储对象。 类似Java里面的Map<String,Object> List(列表) Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 它的底层实际是个链表 ! Set(集合) Redis的Set是String类型的无序集合,它是通过HashTable实现的 ! Zset(sorted set:有序集合) Redis zset 和 set 一样,也是String类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。 Redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但是分数(Score)却可以重复。 HyperLogLog Redis 在 2.8.9 版本添加了 HyperLogLog 结构。 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。 HyperLogLog则是一种算法,它提供了不精确的去重计数方案。 举个栗子:假如我要统计网页的UV(浏览用户数量,一天内同一个用户多次访问只能算一次),传统的解决方案是使用Set来保存用户id,然后统计Set中的元素数量来获取页面UV。但这种方案只能承载少量用户,一旦用户数量大起来就需要消耗大量的空间来存储用户id。我的目的是统计用户数量而不是保存用户,这简直是个吃力不讨好的方案!而使用Redis的HyperLogLog最多需要12k就可以统计大量的用户数,尽管它大概有0.81%的错误率,但对于统计UV这种不需要很精确的数据是可以忽略不计的。 GEO地理位置 Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作。来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。geo的数据类型为zset。 GEO 的数据结构总共有六个常用命令:geoadd、geopos、geodist、georadius、georadiusbymember、gethash BitMap 在开发中,可能会遇到这种情况:需要统计用户的某些信息,如活跃或不活跃,登录或者不登录;又如需要记录用户一年的打卡情况,打卡了是1, 没有打卡是0,如果使用普通的 key/value存储,则要记录365条记录,如果用户量很大,需要的空间也会很大,所以 Redis 提供了 Bitmap 位图这中数据结构,Bitmap 就是通过操作二进制位来进行记录,即为 0 和 1;如果要记录 365 天的打卡情况,使用 Bitmap表示的形式大概如下:0101000111000111.

华为数据库获年度最佳创新奖

12月21日,在第十一届中国数据库技术大会(DTCC)2020数据风云奖评选活动中,华为云数据库GaussDB(openGauss)和金融行业核心数据库上云解决方案分别荣获“年度最佳创新产品奖”、“年度最佳创新解决方案奖”。 DTCC2020是由IT168 旗下 ITPUB 企业社区平台主办的顶级数据领域技术盛会,历经十年的积累与沉淀,成为国内数据库领域的技术风向标,历年举办的数据风云奖评选活动亦成为数据技术领域权威奖项。 华为云数据库团队受邀参加此次技术盛宴,深入GaussDB产品、技术、生态等领域,详细解读了GaussDB数据库技术创新、多元融合、生态开放、行业实践等内容。在DTCC2020大会上,华为云数据库GaussDB(openGauss)和金融行业核心数据库上云解决方案,经过组委会专家严格评审,在众多竞品中脱颖而出,荣膺“年度最佳创新产品奖”、“年度最佳创新解决方案奖”。 为什么华为云数据库能拿下这个奖项呢?为什么能在一众网络科技公司同等的技术框架下脱颖而出,华为云数据库有自己独到的优势和别人无法与之比较的技术优点。 华为云数据库:基于华为积累多年的数据库研发、搭建和维护经验,结合数据库云化改造技术,大幅优化传统数据库,为您打造更高可用、更高可靠、更高安全、更高性能、即开即用、便捷运维、弹性伸缩的数据库服务,拥有容灾、备份、恢复、安防、监控、迁移等全面的解决方案。 优势 即开即用 您可以通过华为云官网实时生成目标实例,云数据库RDS服务配合弹性云服务器一起使用,通过内网连接云数据库RDS可以有效地降低应用响应时间、节省公网流量费用。 弹性扩容 可以根据您的业务情况弹性伸缩所需的资源,按需开支,量身定做。配合云监控(Cloud Eye)监测数据库压力和数据存储量的变化,您可以灵活调整实例规格。 完全兼容 您无需再次学习,云数据库RDS各引擎的操作方法与原生数据库引擎的完全相同。云数据库RDS还兼容现有的程序和工具。使用数据复制服务(Data Replication Service,简称DRS),可用极低成本将数据迁移到华为云关系型数据库,享受华为云数据库为您带来的超值服务。 运维便捷 RDS的日常维护和管理,包括但不限于软硬件故障处理、数据库补丁更新等工作,保障云数据库RDS运转正常。提供专业数据库管理平台,重启、重置密码、参数修改、查看错误日志和慢查询日志、恢复数据等一键式功能。提供CPU利用率、IOPS、连接数、磁盘空间等实例信息实时监控及报警,让您随时随地了解实例动态。 如果我们将数据库分为四个部分,那么这四个部分分别是: 小微型:适用于开发测试及小型业务场景——价格优惠、性价比高 标准型:适用于大部分场景——套餐配置均衡 内存增强型:适用于大数据量读写场景——以较低价格获得更高并发连接数和QPS CUP增强型:适用于高并发读写及高逻辑运算场景,兼容老套餐配比 华为云数据库之所以能成为广大用户的第一选择,除了强大功能优势以外,亲民的价格和优质的服务也是用户选择华为云很重要的一点。按需提供就说明了华为云提供的数据库是能精准定位到某一个用户所需要的东西,而非简单的做出几个模板来让客户调选,而是让客户在自己有需要并且直达自己需要的是什么的时候,能完完全全拿到自己的东西。不会出性能溢出或者说性能不够的情况。 数据库实例是云数据库RDS的最小管理单元。一个实例代表了一个独立运行的云数据库RDS。您可以在一个实例中创建和管理多个数据库,并且可以使用与独立访问数据库实例相同的工具和应用进行访问。使用管理控制台或API可以方便地创建或者修改数据库实例。云数据库RDS服务对运行实例数量没有限制,但每个数据库实例都有唯一的标识符。 实例可进行如下分类: 很多时候选择大于一切,我们在选择一款产品的时候肯对选择相对于合适自己的,管理方便性能强大的。就好像我们买一部手机会选择合适自己使用的,游戏爱好者就会选择游戏性能好的手机,拍照爱好者会选择相机好的手机。但大部分情况是我们需要的是一台各方面都不差,而且有自己优势的手机。华为云也是这样,各方面都不差还有自己的优势。所以在选择的时候,华为云自然而然的成为了用户的首选。 本文由博客群发一文多发等运营工具平台 OpenWrite 发布

MySQL - 锁的分类

MySQL - 锁的分类 1. 加锁机制 乐观锁 悲观锁 2. 兼容性 共享锁 排他锁 3. 锁粒度 表锁 页锁 行锁 4. 锁模式 记录锁(record-lock) 间隙锁(gap-lock) next-key-lock 意向锁 插入意向锁