August 14, 2010
NoSQL总结分类
"NoSQL数据库异军突起,随着Digg和 sf.net大型应用不断采取NoSQL,NoSQL运动已经蓬勃发展,NoSQL数据库很多,如何对他们分类,以便方便地根据自己应用特色选择不同的NoSQL数据库呢?\nNoSQL = HVSP 无(传统关系数据库的)join或明显事务的高容量简单处理。\n按照数据模型保存性质将当前NoSQL分为四种:\n1.Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects)\n2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra.\n3.Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB\n4.Graph-oriented 面向图论. 如Neo4J.\nNoSQL一般都是分布式数据库,高性能是其特点,因此,数据是如何被分布、复制/碎片以及合成就成为关键,这其中涉及你的应用对数据一致性的要求,见CAP原理,不同一致性处理方式决定不同类型:\n1.基本上基于Dynamo. 核心思想就是在多个节点之间获得最 …"
August 14, 2010
Cassandra数据模型
"提起NoSQL这个话题,仿佛不应该是DBA要关注的事,而是架构师应该关心的。但是作为一名DBA,在使用传统的关系型思想建模时,应该有必要了解NoSQL的建模方法。\n各种NoSQL数据库有很多,我最关注的还是BigTable类型,因为它是一个高可用可扩展的分布式计算平台,用来处理海量的结构化数据,而数据库同样也是处理结构化数据,所以除了没有SQL,在数据模型方面有相似之处。Cassandra是facebook开源出来的一个版本,可以认为是BigTable的一个开源版本,目前twitter和digg.com在使用。我们尝试从DBA的角度出发去理解Cassandra的数据模型。\nNoSQL并不能简单的理解为No SQL,其本质应该是No Relational,也就是说它不是基于关系型的理论基础,而我们所有传统的数据库都是基于这套理论而发展起来的,所以SQL并不是问题的关键所在,比如有些NoSQL数据库可以提供SQL类型的接口,允许你通过类SQL的语法去访问数据。而Friendfeed则是反其道而行之,利用关系型数据库MySQL,采用了去关系化的设计方法,去实现自己的KeyValue存储。所 …"
August 13, 2010
Apache禁止目录访问方法介绍
"在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发 生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止目录访问(禁止游览列出的目录或文件列表)、禁止或允许IP与域名访问目录的功 能。\n环境说明\n我使用的是DedeCMS DedeAmpz的PHP运行环境,PHP版本5.2.4,Apache版本2.2.4\n在Apache中配置禁止目录访问,即禁止游览列出的目录/文件列表的方法\n访问网站目录时Apache默认配置为可列出目录/文件列表,即当你访问http://localhost时会列出相关的目录和文件列表,我们可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下:\n1、打开apache配置文件httpd.conf\n2、找到\nOptions Indexes AllowOverride None Order allow,deny Allow from all 只需要修改Options Indexes为Options None即可,注:根据PHP运行环境安装包的 …"
August 11, 2010
可扩展性设计之数据切分
"可能很多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了, 只不过在有些文章中称之为数据的 Sharding 。其实不管是称之为数据的 Sharding 还是数据的切分,其概念都是一样的。简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分同时还可以提高系统的总体可用性,因为单台设备 Crash 之后,只有总体数据的某部分不可用,而不是所有的数据。\n数据的切分( Sharding )根据其切分规则的类型,可以分为两种切分模式。 垂直(纵向)切分: 一种是按照不同的表(或者 Schema )来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分; 水平(横向)切分: 另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。\n垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所 …"
August 7, 2010
FreeBSD+Rsync文件同步
"一.服务端和客户端安装一样\nwoody-207#cd /usr/ports/net/rsync woody-207#make install\n二.配置rsync服务端\n****woody207# vi /usr/local/etc/rsyncd.conf\n添加以下内容\n[www] comment = web server backup path = /www auth users = woody uid = nobody gid = nogroup secrets file = /usr/local/etc/rsyncd.secrets read\n启动rsync的daemon模式\nvi /usr/local/etc/rc.d/rsyncd 修改这一行内容,使用IPV4协议 command_args=”-4 –daemon”\n系统服务配置\n****#echo ‘rsyncd_enable=”YES”’ \u0026raquo; /etc/rc.conf\n启动服务\n****woody-207# /usr/local/etc/rc.d/rsyncd start\n检查Rsync daemon …"
August 7, 2010
[教程]freebsd中使用rsync同步文件
"rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统。 可以很容易做到保持原来文件的权限、时间、软硬链接等等。 无须特殊权限即可安装。 优化的流程,文件传输效率高。 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 支持匿名传输,以方便进行网站镜象。\n测试环境freebsd6.3 server:192.168.1.3 client:192.168.1.4 1、server端配置(备份源服务器) 安装rsync #cd /usr/ports/net/rsync #make install clean 安装成功后编辑rsync的配置文件 #vi /usr/local/etc/rsyncd.conf 加入以下内容\n[test] #rsync区段的设定名称 comment = test rsync backup #注释 path = /var/www/htdocs/ #需要同步的数据所在路径 auth users = test #连接rsync服务的帐号 uid = …"
August 7, 2010
rsync从linux到linux的文件同步备份
"一、环境\n需要备份文件的服务器(服务器端):192.168.1.201 (RHEL 5)\n接收备份文件的服务器(客户端):192.168.1.202 (CENTOS 5)\n二、安装配置\n1.服务器端的配置\nA、采用系统默认安装的rsync 编辑/etc/rsyncd.conf文件,如果没有则新建一个。 vi /etc/rsyncd.conf #[globale] strict modes= yes #check passwd file port= 873 #default port logfile= /var/log/rsyncd.log pidfile= /var/run/rsyncd.pid max connections= 4 #[modules] [testlink] #备份模块 uid= root gid= root path= /usr/local/apache/htdocs/testlink/upload_area #要备份的目录 read only= no host allow= * auth users= wwyhy secrets file= …"
August 7, 2010
Linux/FreeBSD下配置Subversion同步Web文件夹手记
"下载安装subversion-1.6.9.tar.gz\n1\u0026gt; svnserve配置\n1.1 创建仓库存放目录\nmkdir -p /opt/svn/repos\nchown -R svn:svn /opt/svn/\n2\u0026gt; 启动svn\nsvnserve -d –listen-host=0.0.0.0 –listen-port=3190 -r /data/repos\n3\u0026gt; 创建SVN仓库\nsvnadmin create /opt/svn/repos/abc\nvim /opt/svn/repos/abc/conf/passwd\n4\u0026gt; 新增访问用户名和密码\n格式如下\n[users]\nroger=123456#用户名=密码\n5\u0026gt; 修改 svnserve.conf\n#vi /opt/svn/repos/abc/conf/svnserve.conf\n#password-db = passwd为password-db = passwd //使用密码文件\n#anon-access = read 为 anon-access = read //匿名可以读取,如果设置必须输入密码才能 …"
August 3, 2010
Cacti进阶应用一:汇总流量图-将数据合并后作图
"在使用Cacti方便快捷的建立监控图时,往往根据实际应用必须监控几台甚至上百台服务器的汇总流量图来观察该应用服务器组的总流量等指标。\n这里我们就来介绍如何用cacit快速的建立汇总流量图,其他汇总图建立方法相同; 一、创建CDEF 1、点击cacti左边菜单中的graph Management下的CDEFs 2、点击CDEF‘s右边的add,增加一个名为Turn All Data into Bits项\n3、在CDEF Items表格中点击add,输入如下图:依次创建以下三个Items; [][1]\n[][2]\n[][3]\n4、完成后如下图: [][4] CDEF item创建完成。\n二、创建new graph 1、点击cacti左边菜单中的graph Management\n2、在右边点击add出现如下图,直接选择create [][5]\n3、在Graph Configuration表格中的title输入新图的名字;如IDC all interface traffic in(bits/sec)\n4、表格最下的选项Vertical Label是纵轴的标识,这里我们填入Bits Per …"
August 1, 2010
MySQL模式 : Strict Mode
"I. Strict Mode阐述\n根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:\n1).不支持对not null字段插入null值\n2).不支持对自增长字段插入”值,可插入null值\n3).不支持 text 字段有默认值\n看下面代码:(第一个字段为自增字段)\n$query=”insert into demo values(”,’$firstname’,’$lastname’,’$sex’)”;\n上边代码只在非strict模式有效。\n$query=”insert into demo values(NULL,’$firstname’,’$lastname’,’$sex’)”;\n上边代码只在strict模式有效。把空值”换成了NULL.\nII.让数据库支持Strict Mode\n1.对数据库结构进行以下改进来支持strict mode:\n给所有not null字段都设置非null默认值,字符串默认值为 ”,数值默认值为 0,日期默认值为 ‘0000-00-00 00:00:00’\n去掉text字段的默认值\n规范化改进: …"