数据库服务器

Redis 数据库

旧巷老猫 提交于 2019-12-05 20:07:02
Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储 Redis 支持数据的备份,即 master - slave 模式的数据备份 Redis 优势 性能极高 – Redis 读的速度是 110000 次 /s, 写的速度是 81000 次 /s 。 丰富的数据类型 - Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子性 - Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。 其他特性 - Redis 还支持 publish/subscribe 通知,key 过期等特性。 Redis 数据类型 Redis 支持 5 中数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset

Web

佐手、 提交于 2019-12-05 15:13:19
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。 体系结构: 简述 Web体系结构 传统的Web数据库系统一般实现Web数据库系统的连接和应用可采取两种方法,一种是在Web服务器端提供中间件来连接Web服务器和数据库服务器,另一种是把应用程序下载到客户端并在客户端直接访问数据库。中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务,它能够直接调用外部程序或脚本代码来访问数据库,因此可以提供与数据库相关的动态HTML页面,或执行用户查询,并将查询结果格式化成HTML页面。通过Web服务器返回给Web浏览器。最基本的中间件技术有通过网关接口CGI和应用程序接口API两种。 公共网关接口 CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是WWW服务器运行时外部程序的规范,按照CGI编写的程序可以扩展服务器的功能,完成服务器本身不能完成的工作,外部程序执行时间可以生成HTML文档,并将文档返回WWW服务器。CGI应用程序能够与浏览器进行交互作用

MySQL学习笔记之DDL(Data Definition Languages)语句

馋奶兔 提交于 2019-12-05 12:17:25
1. DDL概念 DDL:数据定义语言,定义了不同的数据段、数据库、表、列、索引等数据库对象。就是对数据库内部的对象进行创建、删除、修改等操作的语言。常用的语句关键字主要包括create、drop、alter。 2. 登录数据库系统 1)启动MySQL服务器后,输入以下命令连接MySQL服务器 -h:host(主机名) -u:username(用户名) -p:password(密码) 2)连接MySQL后的界面 3. 查看现有的数据库 1)`show databases` 刚安装好的MySQL中都有4个数据库,都是安装MySQL时系统自动创建的,其各自功能如下: information_scheme:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等。 cluster:存储了系统的集群信息。 mysql:存储了系统的用户权限信息。 test:系统自动创建的测试数据库,任何用户都可以使用。 4. 创建数据库 1)CREATE DATABASE dbname 注:如果存在的话就会报错。 避免报错的话可以: create database if not exists testdb 2)结果 show databases 5. 删除数据库 `drop database dbname;` ![在这里插入图片描述](https://img-blog

MySQL学习笔记-复制

纵饮孤独 提交于 2019-12-05 11:57:07
MySQL 从 3.23 版本开始提供复制的功能。复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保存同步。 MySQL 支持一台主库同时向多台从库进行复制,从库同时也可以作为其他服务器的主库,实现链状的复制。 MySQL 复制的优点主要包括以下 3 个方面: 1.如果主库出现问题,可以快速切换到从库提供服务; 2.可以在从库上执行查询操作,降低主库的访问压力; 3.可以在从库上执行备份,以避免备份期间影响主库的服务。 注意:由于 MySQL 实现的是异步的复制,所以主从库之间存在一定的差距,在从库上进行的查询操作需要考虑到这些数据的差异,一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从库查询,实时性要求高的数据仍然需要从主数据库获得。 一、 MySQL 复制原理: MySQL 的 Replication 是一个异步的复制过程,从一个 MySQL 节点(称之为 Master )复制到另一个 MySQL 节点(称之 Slave )。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程( SQL 线程和 I/O 线程)在 Slave 端,另外一个线程( I/O 线程)在 Master 端。 要实现 MySQL 的

redis三种模式

女生的网名这么多〃 提交于 2019-12-05 11:39:29
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。普遍用于目前主流的分布式架构系统中,关于redis的详细介绍,见另一篇文章: redis的安装与介绍 ​blog.csdn.net redis的多机数据库实现,主要分为以下三种: Redis哨兵(Sentinel) Redis复制(主从) Redis集群 一、Redis的主从复制 通过执行slaveof命令或设置slaveof选项,让一个服务器去复制另一个服务器的数据。被复制的服务器称为:Master主服务;对主服务器进行复制的服务器称为:Slave从服务器。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。 主从复制问题:当master down,需要手动将一台slave使用slaveof no one提升为master要实现自动,就需要redis哨兵。 实现原理步骤: 从服务器向主服务器发送SYNC命令 主服务器收到SYNC命令后,执行BGSAVE命令,在后台生成RDB文件,使用缓冲区记录从现在开始执行的所有的写命令。 当主服务器的BGSAVE命令执行完毕后

分布式问题分析

人走茶凉 提交于 2019-12-05 11:24:56
分布式问题分析 https://www.cnblogs.com/zhang-qc/p/8688052.html 原作者的blog问题写的非常好 先分布式 才能cloud native 参考: https://github.com/CyC2018/Interview-Notebook/blob/master/notes/ 业务中的分布式: 分布式 存储 :将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份(高可用性) 分布式 计算 :将一个大的计算任务分解成小任务分配到多个节点上去执行,再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算最好的例子。 分布式事务: 指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。 产生的原因: 数据库分库分表; SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。 解决办法: 1. 两阶段提交协议(很好地解决分布式事务问题) 2. 消息中间件(本质上是一个暂存转发消息的一个中间件) 处理模型:(1)点对点;(2)发布/订阅 负载均衡的算法与实现: 算法有轮询(Round Robin)、加权轮询、最少连接(将请求发送给当前最少连接数的服务器)、加权最小连接、随机算法 上面的没有加权的适合服务器性能差不多场景 Zookeeper 分布式锁  

Redis(四):独立功能的实现

这一生的挚爱 提交于 2019-12-05 07:29:54
发布与订阅 Redis 的发布与订阅功能有 PUBLISH 命令, SUBSCRIBE 命令, PSUBSCRIBE 命令, PUBSUB 命令等组成。 客户端可以通过 SUBSCRIBE 命令订阅一个或多个频道,当其它客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这消息。 频道的订阅与退订 Redis会在 redisServer 中用 pubsub_channels 字典来记录订阅的客户端和频道的关系。其中字典的键是被订阅的频道,而字典的值是一个客户端链表,保存了订阅这个频道的所有客户端。 比如有一个客户端执行了 SUBSCRIBE HEllO ,另一个客户端执行 SUBSCRIBE HELLO WORLD ,那么此时 redisServer 中 pubsub_channels 的结构如下: 订阅频道 当客户端执行 SUBSCRIBE <channel1> <channel2...> 命令时,服务器会现在 pubsub_channels 字典中查询是否有对应的键,如果存在,则将客户端添加到键对应的链表的末端,如果不存在,则在字典中添加键,并关联新的链表,然后将客户端加入链表。 退订频道 当客户端执行 UNSUBSCRIBE 命令时,服务器会在 pubsub_channels 的字典中找到对应的键,然后遍历链表,找到客户端未自身的节点移除。如果移除完节点后,链表为空

SQL

梦想与她 提交于 2019-12-05 02:07:08
1.经典SQL语句大全 4.一、基础 转载:https://www.cnblogs.com/bluedy1229/p/8992965.html 1.1、说明:创建数据库 2.CREATE DATABASE database-name 3.2、说明:删除数据库 4.drop database dbname 5.3、说明:备份sql server 6.--- 创建 备份数据的 device 7.USE master 8.EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' 9.--- 开始 备份 10.BACKUP DATABASE pubs TO testBack 11.4、说明:创建新表 12.create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 13. 14.根据已有的表创建新表: 15.A:create table tab_new like tab_old (使用旧表创建新表) 16.B:create table tab_new as select col1,col2… from tab_old definition only 17.5、说明:删除新表 18.drop

PHP面试题汇总

别说谁变了你拦得住时间么 提交于 2019-12-05 02:02:31
1、酒店预订怎么实现?怎么设计表 你好,我大概的说下我们的业务流程,我们的业务流程是:用户在网站浏览酒店信息,可以根据地区检索出该地区的酒店信息。列表展示酒店的信息由:酒店的名称,酒店图片,酒店位置,评论人数,评论分数以及最低入住价格。用户选中要入住的酒店进入酒店详情页面,查看酒店的介绍以及酒店的房型列表,用户根据他要入住的时间和离店的时间,检索出这个时间段内的所有可选房型(房间数量-当天的订单-当天未离店订单=剩余房间数量)显示给用户。用户选择好房型后就可以进行下单,要求有订单的开始时间,结束时间,房间数量,住客姓名,抵店时间,联系方式,备注信息等等。 那我的表是这么设计的,总共有6张表,分别是: 用户表user,里面有下面几个字段,(用户编号,用户名称,用户密码,用户联系方式) 酒店表hotel,里面有(酒店编号,酒店名称,酒店图片,评论人数,评论分数,最低入住价格,所在地区) 酒店图片表pic(图片编号,图片地址,图片排序,图片所属酒店) 评论表comment(评论编号,评论内容,评论时间,用户编号,酒店编号) 房型表house(房型编号,床型,早餐,宽带,人数上限,房价,房间数量,最长预定时间) 订单表order(订单编号,开始时间,结束时间,房间数量,住客姓名,最晚抵店时间,联系电话,使用优惠券,备注,订单状态) 以上就是我对这个酒店预订系统的设计 2

关于大型web服务器的设计思路

微笑、不失礼 提交于 2019-12-05 01:55:07
大型网站,比如门户网站,在海量用户访问、高并发请求方面,基本的解决方案是以下几点: 1、高性能的数据库(oracle/db2/mysql...) 2、高性能的Web容器(weblogic/apache...) 3、高效率的编程语言(java/C#) 4、使用高性能的服务器(小型机、PC服务器) 5、集群分布式运行(比如上百台小型机器在线运行) 但是在在线用户上百万,日点击量超亿,而数据达几十T,甚至日数据量就达到T级别这种情况下还是难以解决 大型网站面临的高负载和高并发问题。 本人也经常关注这方面的解决方案,结合自己的经验。总结了一部分常用的设计,希望各位多多指点。 一、设计上有足够弹性 这是在前期架构设计师要足够考虑到的。最终目的是通过物理设备的线性投入来应付业务量的增长,而不止于受到技术框架应用部署的限制,甚至推到重来,这样的结构设计就是弹性的设计,当然这里还包括业务上的弹性设计(目前的开发模式、架构设计在很大程度上也是为了解决这个问题)。 一般企业也是极力避免这种情况的发生,否则失去的不仅是成本投入还包括了客户资源。 二、页面静态化 即静态html格式,这样避免了对数据资源的访问,同时也大大降低了应用的CPU消耗。如果能静态页面的信息尽量静态化。 三 、无状态 这里说的无状态是服务器尽量设计成无状态的与客户端通讯,避免了占用大量内存的情况,但这也不是绝对的