数据库系统

存储系统的快照技术

随声附和 提交于 2019-11-29 14:49:45
赵二狗刚刚毕业,应聘进入了锤钮匹科技有限公司,成为了这里的新员工。入司的第一天是分配宿舍(背景音:天哪,还有宿舍!羡慕嫉妒恨!)。跟他在同一个宿舍的是公司的老员工 王大拿,王大拿是该公司的架构师,对公司的情况基本上无所不知。请注意,这里说的是公司的八卦新闻,哈哈! 赵二狗进了宿舍,王大拿正在那里噼里啪啦的敲键盘... ... 赵二狗: 前辈,我是新报道的同事。 没有任何反应。 “前辈”,赵二狗提高了嗓门。 还是没有任何反应。 “前辈!”,赵二狗大喝一声。 王大拿忽的从椅子上站了起来,“干毛,吓死老子了”,王大拿略带怒气的说。 “前辈,我是新入职的同事,跟您一个宿舍,认识您很高兴!”,赵二狗面带笑容的说。 一听这样,王大拿笑了,“好说,好说,你随便坐吧,我这忙着调程序呢”。 “周末还不休息!?”赵二狗小声嘀咕着。 王大拿很愤愤,“是啊,娘的,遇到个Bug,阻塞好几天了。” “什么问题?”赵二狗问。 “说了你也不懂,小鲜肉”,王大拿不屑的说。 王大拿继续说, “你知道什么是快照吗?” “切,不就是快照,那有什么不懂的,我也是堂堂985的硕士研究生,之前专门搞存储的”,赵二狗很不爽。 “好小子,那你讲讲”,王大拿突然提起了兴趣。 于是赵二狗同学开始娓娓道来... ... 什么是快照 快照是存储系统中的一种数据保护技术,主要是实现数据的 逻辑保护。所谓逻辑保护

MySQL权限系统

∥☆過路亽.° 提交于 2019-11-29 14:48:31
MySQL权限级别   全局性的管理权限,作用整个MySQL实例级别   数据库级别的权限,作用于某个指定的数据库上或所有数据库上   数据库对象级别权限,作用于指定的数据库对象上(表,视图等)或所有的数据库对象上   权限存储在mysql库的user,db,tables_priv,columns_priv,and procs_priv这几个系统表 查看所有用户 mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 4 rows in set (0.01 sec) 查看mysql实例默认root用户权限 ysql> show grants for root@'localhost'\G *************************** 1. row ***************************

悲观锁&乐观锁

旧巷老猫 提交于 2019-11-29 13:25:28
悲观锁,正如其名,具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他 事务 ,以及来自外部系统的 事务处理 )修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的 排他性 ,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本( Version )记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。 需要注意的是,乐观锁机制往往基于系统中的 数据存储 逻辑,因此也具备一定的局限性,如在上例中,由于乐观锁机制是在我们的系统中实现

1.分布式架构的来源演进

让人想犯罪 __ 提交于 2019-11-29 13:24:47
架构的本质 一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最 终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。 架构的本质就是对系统进行有序化重构,使系统不断进化 那架构是如何实现无序到有序的呢? 基本的手段就是分和合,先把系统打散,然后重新组合。 分的过程是把系统拆分为各个子系统 / 模块 / 组件,拆的时候,首先要解决每个组件的定 位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最终要求,把各个分离的 组件有机整合在一起,相对来说,第一步的拆分更难。 拆分的结果使开发人员能够做到业务聚焦、技能聚焦,实现开发敏捷,合的结果是系统变得 柔性,可以因需而变,实现业务敏捷 架构的分类 架构一般可分业务架构、应用架构、技术架构 1. 业务架构从概念层面帮助开发人员更好的理解系统,比如业务流程、业务模块、输入输出、 业务域 2. 应用架构从逻辑层面帮助开发落地系统,如数据交互关系、应用形式、交互方式,是的整 个系统逻辑上更容易理解,步入大家熟知的 SOA 就属于应用架构的范畴 3. 技术架构主要解决技术平台选型、如操作系统、中间件、设备、多机房、水平扩展、高可 用等问题 需要注意的是,系统或者架构首先都是为人服务的,系统的有序度高,用用逻辑合理,业务 概念清晰是第一位。现在大家讨论更多的是技术架构,如高并发设计

大数据下高并发的处理详解

别等时光非礼了梦想. 提交于 2019-11-29 13:19:17
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就要想想应对措施,今天我们就一起讨论一下常见的并发和同步吧。 首先为了更好的理解并发和同步,我们需要首先明白两个重要的概念: 同步和异步 同步和异步的区别和联系 所谓同步,就是一个线程执行一个方法或函数的时候,会阻塞其它线程,其他线程要等待它执行完毕才能继续执行。 异步,就是多个线程之间没有阻塞,多个线程同时执行。 通俗一点来说,同步就是一件事一件事的做,异步就是做一件事,不影响做其他事情。 例如:吃饭和说话,只能一件一件的来,因为只有一张嘴。 但是吃饭和听音乐是异步的,可以一起进行,因为听音乐并不影响我们吃饭。 对于Java程序员来说,Synchronized最为熟悉了,如果它作用于一个类的话,那么就是一个线程访问类的方法时,其他线程就会阻塞,相反,如果没有这个关键字来修饰的话,不同线程就可以在同一时间访问同一个方法,这就是异步。 脏读和不可重复读 脏读 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这是,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读取的这个数据是脏数据(Dirty Data)

oracle 常用 信息查询

十年热恋 提交于 2019-11-29 12:40:44
查看当前用户的缺省表空间   SQL>select username,default_tablespace from user_users;   查看当前用户的角色   SQL>select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL>select * from user_sys_privs;   SQL>select * from user_tab_privs;   查看用户下所有的表   SQL>select * from user_tables;   1、用户   查看当前用户的缺省表空间   SQL>select username,default_tablespace from user_users;   查看当前用户的角色   SQL>select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL>select * from user_sys_privs;   SQL>select * from user_tab_privs;   显示当前会话所具有的权限   SQL>select * from session_privs;   显示指定用户所具有的系统权限   SQL>select * from dba_sys_privs where grantee='GAME';  

C/S结构网络开发与B/S结构网络开发认识

吃可爱长大的小学妹 提交于 2019-11-29 11:41:38
C/S结构网络开发与B/S结构网络开发认识 C/S结构网络开发:如QQ客户端的登录界面 B/S结构网络开发:网页的客户端登录界面 2.C/S结构与B/S的差别 第一、什么是C/S结构。 C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。 第二、什么是B/S结构。 B/S(Browser/Server)结构即浏览器和服务器结构

缓存在分布式系统中的应用

余生颓废 提交于 2019-11-29 11:27:19
一、缓存概述 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 1.1缓存的原理 (1) 将数据写入/读取速度更快的存储(设备); (2) 将数据缓存到离应用最近的位置; (3) 将数据缓存到离用户最近的位置。 1.2缓存分类 在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。 (1) CDN缓存; (2) 反向代理缓存; (3) 分布式Cache; (4) 本地应用缓存; 1.3缓存媒介 常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等; 缓存的内容:文件,数据,对象; 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式) 1.3缓存设计 缓存设计需要解决以下几个问题: (1) 缓存什么? 哪些数据需要缓存:1.热点数据;2.静态资源; (2) 缓存的位置? CDN,反向代理,分布式缓存服务器,本机(内存,硬盘) (3) 如何缓存的问题? 过期策略 1.固定时间:比如指定缓存的时间是30分钟; 2.相对时间:比如最近10分钟内没有访问的数据; 同步机制 实时写入;(推) 异步刷新;(推拉) 二、CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂

269.数据库系统概述

て烟熏妆下的殇ゞ 提交于 2019-11-29 08:29:00
1.数据库系统 1.1定义   数据库系统是以数据库技术为核心的计算机应用系统,其主要目的是处理生产和实践过程中产生的数据和信息,实现生产过程管理的自动化和信息化,提高信息管理效率。   数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。 图1.1 数据库系统的构成 1.2组成 数据库系统一般包含四个部分 1.2.1数据库 定义:是数据库系统存放结构化数据的地方,是 长期存储的、有组织的、可共享的 数据的集合。 Ø 数据最终是以文件的形式存储在磁盘上,只有数据库管理系统才能对这些文件进行存取操作。 Ø 每一个数据库都至少有一个这样文件,称为数据文件。 Ø SQL Server数据库的数据文件以.mdf或.ndf为扩展名。 数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机内。广义上讲,数据不仅包含数字,还包括文本、图像、音频、视频等。 例如,把一个学校的学生、课程、学生成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。 因此,数据库由一些持久的相互关联的数据的集合组成,并以一定的组织形式存放在计算机的存储介质中。 1.2.2数据库管理系统(DBMS)   定义: DBMS是数据库的管理软件,是应用程序和数据库之间 桥梁

CentOS系统MySQL双机热备配置

∥☆過路亽.° 提交于 2019-11-29 07:52:00
MySQL主从复制(Master-Slave)实践 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络): 在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化,业务服务器在执行写或者相关修改数据库的操作是在主服务器上进行的,读操作则是在各从服务器上进行。如果配置了多个从服务器或者多个主服务器又涉及到相应的负载均衡问题,关于负载均衡具体的技术细节还没有研究过,今天就先简单的实现一主一从的主从复制功能。 Mysql主从复制的实现原理图大致如下(来源网络): MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。