大家都看到过在支付宝架构图里面一个分布式数据分发中心(Gara系统),这个分布中心为了完成每天的数据抽取和向多个Oracle Rac集群和Greenplum集群分布数据的心脏,数据仓库系统是一切系统数据来源。其中功能是为了完成异构数据抽取和装载。 为了使Gara实现高效性和线性扩展能力,现在alipay dw是用4台高性能PC Dell R900(4*4core,128GB memory)来实现,但是Gara原来开发的程序不能实现分布式,只能通过调度系统来控制,灵活性不够强。 最近发现一个开源软件 Keepalived,能很好来实现Gara高效性和线性扩展能力,很多人用来 Keepalived网站的负载均衡,Keepalived还有一个重要的特性就是实现高可用性,就利用这个特性来实现Gara分布式管理
Browsing the archives for the 数据库类 category
先介绍一下绍一些流行的分布式key/value存贮系统,并做一些简单的比较。 词汇与背景阅读: Distributed Hash Table (DHT) and algorithms such as Chord or Kadmelia Amazon’s Dynamo Paper, and this ReadWriteWeb article about Dynamo which explains why such a system is invaluable Amazon’s SimpleDB Service, and some commentary Google’s BigTable paper The Paxos Algorithm – read this page in order to appreciate that knocking up a Paxos implementation isn’t [...]
1、MongoDB MongoDB是一款开源,高性能,可扩展,无模式,面向文档(与JSON类似的数据模式)的数据库,它为时下最流行的编程语言提供了驱动,如PHP,Python,Perl,Ruby,JavaScript,C++等,支持全文索引,自动分片,跨LAN或WAN扩展,采用Key/Value方式存储数据。MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用。世界上最大的单词收录网站Wordnik就从MySQL转向了MongoDB。 http://www.mongodb.org 2、Hypertable Hypertable是一款高性能分布式数据存储系统,旨在为应用程序提供最好的性能,可扩展性和可靠性,它建立在Google的BigTable之上,主要面向大规模数据集应用,其目标是要成为世界上最好的大规模并发高性能数据库平台。百度目前也使用了Hypertable,也是它的赞助商。
为了做sphinx搜索的分词库, 收罗了一堆词库,然后打算排重提出来,入库以后发现123万多的记录。 再网上寻找mysql 排重的方法, 找了很多都是使用sql命令去select 然后delete .效率很差。 偶尔在台湾人的网站看到这么条语句。使用以后。效率非常高啊。 50万重复数据几秒钟就被清掉了。 帅啊。特记录如下 ALTER IGNORE TABLE dict ADD UNIQUE INDEX(content);
1. 安装 下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。 [@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz [@s1.yejr.com ~]# cd mysql-proxy-0.6.0-linux-rhas4-x86 #可以看到有2个目录 [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls sbin share [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/ [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls share mysql-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua tutorial-basic.lua tutorial-inject.lua tutorial-query-time.lua tutorial-states.lua #将lua脚本放到/usr/local/share下,以备他用 [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/ #删除符号连接等垃圾代码 [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy
集群采用master/slave的方式实现,好像大部分都是配一个master多个slave mysql的负载均衡有mysql_proxy实现 mysql_proxy作者的实现方案 proxy-server有一个连接池,将读操作和写操作分离开来,也就是传说中的读写分离 这个配置起来很简单,在proxy上面运行 #mysql-proxy –proxy-read-only-backend-addresses=192.168.50.8:3306 –proxy-backend-addresses=192.168.50.38:3306 –proxy-lua-script=/etc/mysql/mysql.lua 其中–proxy-read-only-backend-addresses=192.168.50.8:3306可以设置多个。 写数据库操作192.168.50.38 读数据库操作192.168.50.8 最后面的配置是实现读写分离的脚本
mysql的单点一直是一个让人很烦恼的事情,特别是master的单点。 现在外面的解决方案主要如下: 双master方案,heartbert(HA)+rhcs(分布式文件系统),heartbert(HA)+DRBD. 双master存在的问题是master有2个IP,这样意为着前端需要指向2个的masterIP,同时bin-log也是双向同步的,会不会比单向同步的量更多呢? 第二种方案是挺不错的,但是必须要分布式文件系统,要是实在不行就可以用NFS来代替,但是这样存在的问题就是数据文件是单点,所以必须使用分布式文件系统。 第三种是关键是DRBD,这个是在网络层做RAID1,在A机器上收到数据后DRBD会写到本地硬盘上,同时通过网络传输到另外一台机器上。这样保证了2台机器的一致。特别是DRBD传输的时候有多种协议可以选择,但是一般看到网上大家都是使用协议C(C表示收到远程主机的写入确认后,视为写入完成) DRBD的架构如下:
NoSQL数据库异军突起,随着Digg和 sf.net大型应用不断采取NoSQL,NoSQL运动已经蓬勃发展,NoSQL数据库很多,如何对他们分类,以便方便地根据自己应用特色选择不同的NoSQL数据库呢? NoSQL = HVSP 无(传统关系数据库的)join或明显事务的高容量简单处理。 按照数据模型保存性质将当前NoSQL分为四种: 1.Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects) 2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra. 3.Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB 4.Graph-oriented 面向图论. 如Neo4J.
社交新闻网站Digg近日决定放弃MySQL,并从LAMP(Linux、 Apache、MySQL和Perl/PHP/Python)架构迁移到基于Cassandra的NoSQL架构。不久之前,Twitter也做出了相同的举措。 Apache Cassandra是一套开源分布式数据库管理系统,最初由Facebook开发,用于储存特别大的数据。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。 大型网站用mysql集群来替代oracle,而大型SNS网站则开始流行nosql了
提起NoSQL这个话题,仿佛不应该是DBA要关注的事,而是架构师应该关心的。但是作为一名DBA,在使用传统的关系型思想建模时,应该有必要了解NoSQL的建模方法。 各种NoSQL数据库有很多,我最关注的还是BigTable类型,因为它是一个高可用可扩展的分布式计算平台,用来处理海量的结构化数据,而数据库同样也是处理结构化数据,所以除了没有SQL,在数据模型方面有相似之处。Cassandra是facebook开源出来的一个版本,可以认为是BigTable的一个开源版本,目前twitter和digg.com在使用。我们尝试从DBA的角度出发去理解Cassandra的数据模型。 NoSQL并不能简单的理解为No SQL,其本质应该是No Relational,也就是说它不是基于关系型的理论基础,而我们所有传统的数据库都是基于这套理论而发展起来的,所以SQL并不是问题的关键所在,比如有些NoSQL数据库可以提供SQL类型的接口,允许你通过类SQL的语法去访问数据。而Friendfeed则是反其道而行之,利用关系型数据库MySQL,采用了去关系化的设计方法,去实现自己的KeyValue存储。所以NoSQL的本质是No Relational. Cassandra特点: 1.灵活的schema,不需要象数据库一样预先设计schema,增加或者删除字段非常方便(on the fly)。 2.支持range查询:可以对Key进行范围查询。 3.高可用,可扩展:单点故障不影响集群服务,可线性扩展。