1 基本思想之什么是分库分表?
从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。
2 基本思想之为什么要分库分表?
数
据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据 *** 作,增
删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、
数据处理能力都将遭遇瓶颈。
3 分库分表的实施策略。
分库分表有垂直切分和水平切分两种。
31
何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据
库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。
32
何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库
上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、
part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,
然后将这些表按照一定的规则存储到多个userDB上。
33 应该使用哪一种方式来实施数据库分库分表,这要看数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑。
如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是首选。
而
如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体
的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。
在现实项目中,往往是这两种情况兼而有之,这就需要做出权衡,甚至既需要垂直切分,又需要水平切分。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后,再针对一部分表,通常是用户数据表,进行水平切分。
4 分库分表存在的问题。
41 事务问题。
在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
42 跨库跨表的join问题。
在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联 *** 作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
43 额外的数据管理负担和数据运算压力。
额
外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于
一个记录用户成绩的用户数据表userTable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order
by语句就可以搞定,但是在进行分表之后,将需要n个order
by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。
Linux下的Oracle数据库是非常稳定的,它可以提供高可用性、可靠性和安全性,可以满足企业级应用的需求。Oracle在Linux上的可靠性和稳定性也得到了广泛的认可,它可以提供更高的性能和更低的成本。
尽管数据库本身的数据量越来越大,记录数越来越多,但每天的增删改数据量并不大。OB为何采用这种特殊架构,简要来说,就是基于这样一条理论基础,尽管数据库本身的数据量越来越大,记录数越来越多,但每天的增删改数据量并不大。
Linux *** 作系统rpm包安装方式详细步骤Linux *** 作系统rpm包安装方式详细步骤安装包(Install pack),即软件安装包,是可自行解压缩文件的集合,其中包括软件安装的所有文件。运行这个安装包(可执行文件),可以将此软件的所有文件释放到硬盘上,完成修改注册表、修改系统设置、创建快捷方式等工作。安装包文件多为exe格式。以下是店铺帮大家整理的Linux *** 作系统rpm包安装方式详细步骤,仅供参考,大家一起来看看吧。Linux *** 作系统rpm包安装方式详细步骤 篇1在Windows下安装一个软件很轻松,只要双击exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。在前面的内容中多次提到的yum,这个yum是RedHat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。在介绍yum之前先说一说RPM相关的东西。RPM工具RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在 linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖 的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多rpm的文件,这就是RPM包了。每一个rpm包的名称都由”-“和””分成了若干部分。就拿 a2ps-413b-572el5i386rpm 这个包来解释一下,a2ps 为包名;413b则为版本信息;572el5为发布版本号;i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并 没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 alacarte-0100-1fc6noarchrpm 。下面介绍一下rpm常用的命令。1)安装一个rpm包-i :安装的意思-v :可视化-h :显示安装进度另外在安装一个rpm包时常用的附带参数有:--force 强制安装,即使覆盖属于其他包的文件也要安装--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包2)升级一个rpm包rpm -Uvh filename -U :即升级的意思3)卸载一个rpm包rpm -e filename 这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。卸载时后边跟的filename和安装时的是有区别的。上面命令提到的 “|”在linux系统中用的非常多也非常有用,它是一个管道符,用来把前面运行的结果传递给后面的命令。以后会做详细介绍,而后出现的grep命令则是 用来过滤某个关键词的工具,在后续章节中会做详细介绍。4)查询一个包是否安装rpm -q rpm包名(这里的包名,是不带有平台信息以及后缀名的)
如果加上了平台信息以及后缀名反而不能查出来。你还可以查询当前系统中所安装的所有rpm包。因为太多,所以笔者列出前十个。5)得到一个rpm包的相关信息rpm -qi 包名 (同样不需要加平台信息与后缀名)6)列出一个rpm包安装的文件rpm -ql 包名通过上面的命令可以看出vim是通过安装vim-enhanced-70109-6el5这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?7)列出某一个文件属于哪个rpm包rpm -qf 文件的绝对路径前面讲过如何查找一个文件(可执行命令)的绝对路径所以你也可以把这两条命令连起来写看到了吗,which vim 这条命令是由两个反引号引起来的,这代表引用反引号里面的命令所产生的结果。关于rpm工具的使用还有很多内容,笔者就不一一列举了,只要你掌握上面这些内容,完全够你平时工作用的了。yum工具介绍完rpm工具后,还需要你掌握最常用的yum工具,这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最 大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有 rpm包。下面笔者介绍常用的yum 命令。1) 列出所有可用的rpm包 “yum list “限于篇幅,笔者只列举出来前7个包信息。从上例中可以看到有”mirrors163com”信息出现,这是在告诉用户,它是从 mirrors163com这里下载到的rpm包资源。如果你使用的是CentOS则你可以从/etc/yumreposd/CentOS- Baserepo这个文件下看到相关的配置信息。从上面的例子中你还可以看到最左侧是rpm包名字,中间是版本信息,最右侧是安装信息,如果安装了就显 示installed,未安装则显示base或者extras,如果是该rpm包已安装但需要升级则显示updates。
2)搜索一个rpm包 “yum search [相关关键词]”除了这样搜索外,笔者常用的是利用grep来过滤相信你也会喜欢用后者吧,这样看起来简明的多。3)安装一个rpm包 “yum install [-y] [rpm包名]”如果不加-y选项,则会以与用户交互的方式安装,首先是列出需要安装的rpm包信息,然后会问用户是否需要安装,输入y则安装,输入n则不安装。而笔者嫌这样太麻烦,所以直接加上-y选项,这样就省略掉了问用户是否安装的那一步。4)卸载一个rpm包 “yum remove [-y] [rpm包名]”卸载和安装一样,你也可以直接加上-y选项来省略掉和用户交互的步骤。在这里笔者要提醒你一下,卸载某个rpm包一定要看清楚了,不要连其他重要的rpm包一起卸载了,以免影响正常的业务。4)升级一个rpm包 “yum [-y] [rpm包]”Linux *** 作系统rpm包安装方式详细步骤 篇2一、rpm包安装方式步骤:引用:1、找到相应的软件包,比如softversionrpm,下载到本机某个目录;2、打开一个终端,su -成root用户;3、cd softversionrpm所在的目录;4、输入rpm -ivh softversionrpm二、deb包安装方式步骤:引用:1、找到相应的软件包,比如softversiondeb,下载到本机某个目录;2、打开一个终端,su -成root用户;3、cd softversiondeb所在的目录;4、输入dpkg -i softversiondeb三、targz源代码包安装方式:引用:1、找到相应的软件包,比如softtargz,下载到本机某个目录;2、打开一个终端,su -成root用户;3、cd softtargz所在的目录;4、tar -xzvf softtargz //一般会生成一个soft目录
5、cd soft6、/configure7、make8、make install四、tarbz2源代码包安装方式:引用:1、找到相应的软件包,比如softtarbz2,下载到本机某个目录;2、打开一个终端,su -成root用户;3、cd softtarbz2所在的目录;4、tar -xjvf softtarbz2 //一般会生成一个soft目录5、cd soft6、/configure7、make8、make install五、apt方式安装:引用:1、打开一个终端,su -成root用户;2、apt-cache search soft注:soft是你要找的软件的名称或相关信息3、如果2中找到了软件softversion,则用apt-get installsoftversion命令安装软件注:只要你可以上网,只需要用apt-cachesearch查找软件,用apt-get install软件六、bin文件安装:如果你下载到的软件名是softbin,一般情况下是个可执行文件,安装方法如下:引用:1、打开一个终端,su -成root用户;2、chmod +x softbin3、/softbin //运行这个命令就可以安装软件了七、不需要安装的软件:有了些软件,比如lumaqq,是不需要安装的,自带jre解压缩后可直接运行。假设下载的是lumaqqtargz,使用方法如下:引用:1、打开一个终端,su -成root用户;2、tar -xzvf lumaqqtargz//这一步会生成一个叫LumaQQ的目录3、cd LumaQQ4、chmod +x lumaqq //设置lumaqq这个程序文件为可运行5、此时就可以运行lumaqq了,用命令/lumaqq即可,但每次运行要输入全路径或切换到刚才生成的LumaQQ目录里6、为了保证不设置路径就可以用,你可以在/bin目录下建立一个lumaqq的链接,用命令ln-s lumaqq /bin/即可,以后任何时候打开一个终端输入lumaqq就可以启动QQ聊天软件了
7、如果你要想lumaqq有个菜单项,使用菜单编辑工具,比如AlacarteMenuEditor,找到上面生成的LumaQQ目录里的lumaqq设置一个菜单项就可以了,当然你也可以直接到/usr/share/applications目录,按照里面其它desktop文件的格式生成一个自己的desktop文件即可。建议开发者们不要用red hat/redflag/suse等第一代Linux *** 作系统,用这些除了方便(也就是说比较傻瓜型)、界面豪华点外没什么好。用debian/ubuntu等第二代吧,apt命令安装软件是最简单的。apt命令会自动解决软件安装过程中的依赖问题,会把没有的包安装上,会把版本低的包自动升级,当然,都是要经你确认一次的。如果你使用Red Hat等第1代Linux系统,安装软件是比较麻烦的事,rpm-ivhsoftArpm是用来安装softA软件的,但通常情况下可能遇到的问题是提示说需要安装softB1,softB2,softB3等一堆软件,然后你安装softB1软件包时,可能又会提示你说需要安装softC1,softC2, softC3,softC4等一堆软件……这样一来你就只够时间到处去找这些软件包了。光盘上没有就得去网上下载,网上还得搜索半天,时间都花在搜索软件包了。而且就算找到这些软件包,还可能会遇到的问题是:softC2软件包必须在softC1软件包之前安装才可以,顺序错了也安装不成功。但这谁知道呢?难啊。所以,你没有时间来安装体验软件的功能了,更别说开发软件了。建议你安装第2代Linux *** 作系统,典型的是Debian Linux和UbuntuLinux,我之前在文章“如何在安装了Windows *** 作系统的电脑上安装Linux *** 作系统”里提到一个简明安装手册,你下载来照着 *** 作就可以安装Ubuntu了。第2代Linux *** 作系统在安装软件方面相当简单:第一步,搜索你要的软件,比如你要找一个游戏软件,它的名称叫myward,这个游戏软件的说明是:myown war game。Linux *** 作系统搜索这个软件包就只需要输入命令apt-cache searchmyward,或者输入软件名称的一部分apt-cache searchwar,或者你不知道软件名称。
¥
5
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
Linux *** 作系统rpm包安装方式详细步骤
Linux *** 作系统rpm包安装方式详细步骤
Linux *** 作系统rpm包安装方式详细步骤
安装包(Install pack),即软件安装包,是可自行解压缩文件的集合,其中包括软件安装的所有文件。运行这个安装包(可执行文件),可以将此软件的所有文件释放到硬盘上,完成修改注册表、修改系统设置、创建快捷方式等工作。安装包文件多为exe格式。以下是店铺帮大家整理的Linux *** 作系统rpm包安装方式详细步骤,仅供参考,大家一起来看看吧。
Linux *** 作系统rpm包安装方式详细步骤 篇1
第 1 页
在Windows下安装一个软件很轻松,只要双击exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。
在前面的内容中多次提到的yum,这个yum是RedHat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。在介绍yum之前先说一说RPM相关的东西。
第 2 页
RPM工具
RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在 linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖 的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
第 3 页
如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多rpm的文件,这就是RPM包了。
每一个rpm包的名称都由”-“和””分成了若干部分。就拿 a2ps-413b-572el5i386rpm 这个包来解释一下,a2ps 为包名;413b则为版本信息;572el5为发布版本号;i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并 没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 alacarte-0100-1fc6noarchrpm 。下面介绍一下rpm常用的命令。
以上就是关于数据库为什么要分库分表全部的内容,包括:数据库为什么要分库分表、linux下oracle数据库是否稳定、ob是靠哪种基础架构实现写入高性能的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)