Posts Tagged ‘数据库’

从数据库管理到在线购物,从博客到电子邮件,开放源代码的PHP程序数不胜数。从1998年到现在,十年的热情与坚持、良好的软件架构、团队协作和创新理念,造就了一批优秀的PHP程序。下面让我们来看看互联网上有史以来最具影响力的PHP程序: 1998 phpMyAdmin phpMyAdmin是一个通过WEB界面管理MySQL数据库的程序。它可以创建、删除数据库,创建、删除和编辑数据表,删除、编辑和新增字段,执行任何SQL语句,管理字段上的主键,管理用户权限,输出数据到多种数据格式,而且目前有50种各国语言版本。 本程序由phpMyAdmin团队开发。 1999 SquirrelMail SquirrelMail是一个基于标准的Webmail类库。它包含了PHP内置的IMAP和SMTP协议,及用于生成HTML4.0界面的代码,支持多种浏览器。SquirrelMail易于安装和配置,提供所有你想要从邮件客户端得到的功能,例如强大的MIME支持,地址簿和文件目录操作等。 2000 eZ Pu.......

More>>


先来看一个场景:当一个用户要使用银行的转帐服务,他要从自己的卡上转一部分钱到另外的一张卡上,他希望这个操作是在自己的卡上减少金额,在另外的卡上增 加金额,这两个操作要么都发生,要么都不发生。但是一些软件和硬件的因素会影响这两个操作的正常发生,这就使系统存在不稳定状态的可能。 事务就是解决这种情况的方式,它可以保证软硬件发生故障是系统的稳定性。 一个事务是有下列属性的工作单元。 原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。 一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一 个一致-状态转换到另一个一致状态。举个例子,在关系数据.......

More>>


PL/Proxy和PostgreSQL集群的结构关系可以用下图清楚地表示 以下操作是在三台不同机器上执行的情况,其中plproxy节点的机器名是P1,数据库节点的机器名分别是D1和D2。机器硬件配置如下,同时需要Linux-4.2、postgresql-8.3.0和plproxy-2.0.4,pgbouncer的安装过程略去。 plproxy节点: hostname: P1 inet addr:10.0.0.1 OS: Linux 2.6.9-42.ELsmp CPU:Intel(R) Xeon(R) CPU L5320 @ 1.86GHz MemTotal: 514440 kB node1节点: hostname:D1 inet addr:10.0.0.2 OS: Linux 2.6.9-42.ELsmp CPU:Intel(R) Xeon(R) CPU L5320 @ 1.86GHz MemTotal: 254772 kB node2节点: hostname:D2 inet addr:10.0.0.3 OS: Linux 2.6.9-42.ELsmp CPU:Intel(R) Xeon(R) CPU L5320 @ 1.86GHz MemTotal: 254772 kB 1. 在P1, D1,D2上安装postgresql-8.3.0,并创建URTCluster数据库 ## Compile and install gunzip postgre.......

More>>


从LiveJournal后台发展看大规模网站性能优化方法 于敦德 2006-3-16 一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目,几个人出于爱好做了这样一个应用,以实现以下功能: 博客,论坛 社会性网络,找到朋友 聚合,把朋友的文章聚合在一起 LiveJournal采用了大量的开源软件,甚至它本身也是一个开源软件。 在上线后,LiveJournal实现了非常快速的增长: 2004年4月份:280万注册用户。 2005年4月份:680万注册用户。 2005年8月份:790万注册用户。 达到了每秒钟上千次的页面请求及处理。 使用了大量MySQL服务器。 使用了大量通用组件。 二、LiveJournal架构现状概况 三、从LiveJournal发展中学习 LiveJournal从1台服务器发展到100台服务器,这其中经历了无数的伤痛,但同时也摸索出了解决这些问题的方法,通过对LiveJournal的学习,可以让我们避免LJ曾经犯过的错误,并且从一开始就对系统.......

More>>


在数据库中有两个表,一个比较巨大,大约1千万条记录(表Big),另一个只有5000条(表small)。 目前需要根据表small来更新表Big。 UPDATE Big SET Bf1=0 WHERE BigId IN(SELECT BigId FROM Small WHERE Sf1>0) 但是这样执行下来,速度非常慢,并且连接使用这台DB服务器的程序也都慢了下来,几近不可用。 仔细分析这条SQL语句,使用了IN。有人说IN是会分拆成一个个OR表达式的,而OR语句将不会使用索引,所以有时候遇到OR,会用UNION ALL来代替。 但在这里用UNION ALL是不行的。 根据笔者的猜想,这条SQL语句大概会用上全表搜索,大表1千万条记录,那么至少比较1千万次,怎么会不慢呢。 于是选择改用游标,先将小表的记录提取出来,然后一条条的跟大表结合执行。 DECLARE curT CURSOR FOR SELECT BigId FROM Small WHERE Sf1>0; DECLARE @Id INT; OPEN curT; FETCH NEXT FROM curT INTO .......

More>>


DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块。DBUtils已经作为 Webware for Python 一部分用来结合 PyGreSQL 访问 PostgreSQL 数据库,当然他也可以用在其他Python应用程序中来访问 DB-API 2 兼容的数据库接口。 模块 DBUtils实际上是一个包含两个子模块的Python包,一个用于连接DB-API 2模块,另一个用于连接典型的PyGreSQL模块。 全局的DB-API 2变量 SteadyDB.py 用于稳定数据库连接 PooledDB.py 连接池 PersistentDB.py 维持持续的数据库连接 SimplePooledDB.py 简单连接池 典型的 PyGreSQL 变量 SteadyPg.py 稳定PyGreSQL连接 PooledPg.py PyGreSQL连接池 PersistentPg.py 维持持续的PyGreSQL连接 SimplePooledPg.py 简单的PyGreSQL连接池 对标准DB-API 2模块的依赖如下图所示: 对典型的PyGreSQL模块依赖如下图所示: 下载 你可以从 Webware 的网站下载最新版本: http:.......

More>>