sqlalchemy、storm和web2py dal的比较报告
El grupo al cual envías entradas es un
grupo Usenet . Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Tu respuesta no se ha enviado.
Tu entrada se ha publicado correctamente.
De:
刘鑫 <march.... @gmail.com>
Fecha: Fri, 25 Sep 2009 11:55:50 +0800
Local: Jue 24 sep 2009 22:55
Asunto: sqlalchemy、storm和web2py dal的比较报告
工作项目报告,所以抹掉项目名先,以“X”代之。 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
===================================
X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 问题是因为使用的ORM框架 storm 有严重的缺陷。
首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 接提交错误的锁定关系,造成死锁。
第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 数据库服务器,这是非常大的安全隐患。
昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 出以下的问题:
第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 种很不严肃的作法。
第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 速度,希望可以组合使用的时候,就会受限。
以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 ORM 框架比较符合我们的需求:
第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 试DDL操作。
第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 及为 PG 特别定制的数组类型。
第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 分即可,不需要完全学会,上手还是很简单的。
第五,文档比 storm 完整的多,而且现在仍在活跃开发。
第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 长期维护的企业应用项目,这是正确和严肃的作法。
第七,对特定数据库的特性有良好的支持,还可以扩展。
在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 态结构的数据对象。
对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 没有完整实现,现在还不能实用。
===================================
-- 光见贼吃肉,没见贼挨打。 ……
劉鑫 March.Liu
No dispones del permiso necesario para enviar entradas.
De:
smallfish <smallfish... @gmail.com>
Fecha: Fri, 25 Sep 2009 12:35:12 +0800
Local: Jue 24 sep 2009 23:35
Asunto: Re: [CPyUG:101819] sqlalchemy、storm和web2py dal的比较报告
占个坑,storm只是练手时候用过,不发表意见。 -- 如果不能改变结果 那就完善过程 http://hi.baidu.com/smallfish_xy http://blog.csdn.net/smallfish_xy
2009/9/25 刘鑫 <march.... @gmail.com>
> 工作项目报告,所以抹掉项目名先,以“X”代之。
> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> ===================================
> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > 问题是因为使用的ORM框架 storm 有严重的缺陷。
> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除 > 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > 接提交错误的锁定关系,造成死锁。
> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > 数据库服务器,这是非常大的安全隐患。
> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > 出以下的问题:
> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > 种很不严肃的作法。
> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > 速度,希望可以组合使用的时候,就会受限。
> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > ORM 框架比较符合我们的需求:
> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > 试DDL操作。
> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > 及为 PG 特别定制的数组类型。
> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > 分即可,不需要完全学会,上手还是很简单的。
> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > 长期维护的企业应用项目,这是正确和严肃的作法。
> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > 态结构的数据对象。
> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > 没有完整实现,现在还不能实用。
> ===================================
> -- > 光见贼吃肉,没见贼挨打。 > ……
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
limodou <limo... @gmail.com>
Fecha: Fri, 25 Sep 2009 12:37:56 +0800
Local: Jue 24 sep 2009 23:37
Asunto: Re: [CPyUG:101819] sqlalchemy、storm和web2py dal的比较报告
2009/9/25 刘鑫 <march.... @gmail.com>:
> 工作项目报告,所以抹掉项目名先,以“X”代之。
> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> ===================================
> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > 问题是因为使用的ORM框架 storm 有严重的缺陷。
> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除 > 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > 接提交错误的锁定关系,造成死锁。
> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > 数据库服务器,这是非常大的安全隐患。
> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > 出以下的问题:
> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > 种很不严肃的作法。
> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > 速度,希望可以组合使用的时候,就会受限。
> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > ORM 框架比较符合我们的需求:
> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > 试DDL操作。
> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > 及为 PG 特别定制的数组类型。
> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > 分即可,不需要完全学会,上手还是很简单的。
> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > 长期维护的企业应用项目,这是正确和严肃的作法。
> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > 态结构的数据对象。
> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > 没有完整实现,现在还不能实用。
> ===================================
> -- > 光见贼吃肉,没见贼挨打。 > ……
> 劉鑫 > March.Liu
uliweb中的ORM就是基于sqlalchemy做的。不过目前没有用到它的session。 -- I like python! UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/ UliWeb <<simple web framework>>: http://uliwebproject.appspot.com My Blog: http://hi.baidu.com/limodou
No dispones del permiso necesario para enviar entradas.
De:
way wrong <wrongwa... @gmail.com>
Fecha: Fri, 25 Sep 2009 13:22:03 +0800
Local: Vie 25 sep 2009 00:22
Asunto: Re: [CPyUG:101819] sqlalchemy、storm和web2py dal的比较报告
正考虑使用PostgreSQL中,这么好的资料,俺收藏了 2009/9/25 刘鑫 <march.... @gmail.com>
> 工作项目报告,所以抹掉项目名先,以“X”代之。
> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> ===================================
> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > 问题是因为使用的ORM框架 storm 有严重的缺陷。
> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除 > 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > 接提交错误的锁定关系,造成死锁。
> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > 数据库服务器,这是非常大的安全隐患。
> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > 出以下的问题:
> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > 种很不严肃的作法。
> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > 速度,希望可以组合使用的时候,就会受限。
> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > ORM 框架比较符合我们的需求:
> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > 试DDL操作。
> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > 及为 PG 特别定制的数组类型。
> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > 分即可,不需要完全学会,上手还是很简单的。
> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > 长期维护的企业应用项目,这是正确和严肃的作法。
> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > 态结构的数据对象。
> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > 没有完整实现,现在还不能实用。
> ===================================
> -- > 光见贼吃肉,没见贼挨打。 > ……
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
Jim Zhan <ijw... @gmail.com>
Fecha: Thu, 24 Sep 2009 22:56:44 -0700 (PDT)
Local: Vie 25 sep 2009 00:56
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
很贊的報告, 雖然我在用 Mongo :-) On Sep 25, 11:55 am, 刘鑫 <march.... @gmail.com> wrote:
> 工作项目报告,所以抹掉项目名先,以"X"代之。
> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> ===================================
> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > 问题是因为使用的ORM框架 storm 有严重的缺陷。
> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事----除 > 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > 接提交错误的锁定关系,造成死锁。
> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > 数据库服务器,这是非常大的安全隐患。
> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > 出以下的问题:
> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > 种很不严肃的作法。
> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > 速度,希望可以组合使用的时候,就会受限。
> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > ORM 框架比较符合我们的需求:
> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > 试DDL操作。
> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > 及为 PG 特别定制的数组类型。
> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > 分即可,不需要完全学会,上手还是很简单的。
> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > 长期维护的企业应用项目,这是正确和严肃的作法。
> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > 态结构的数据对象。
> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > 没有完整实现,现在还不能实用。
> ===================================
> -- > 光见贼吃肉,没见贼挨打。 > ......
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
四不象 <tabris17... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:30:14 +0800
Local: Vie 25 sep 2009 01:30
Asunto: Re: [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
----- Original Message -----
From: way wrong
To: python-cn@googlegroups.com
Sent: Friday, September 25, 2009 1:22 PM
Subject: [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
正考虑使用PostgreSQL中,这么好的资料,俺收藏了
2009/9/25 刘鑫 <march.... @gmail.com>
工作项目报告,所以抹掉项目名先,以“X”代之。
分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
===================================
X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁,
僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多
不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的
问题是因为使用的ORM框架 storm 有严重的缺陷。
首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插
手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说
其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除
了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没
有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁
定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行
vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行
DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离
级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问
操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了
X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到
有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链
接提交错误的锁定关系,造成死锁。
第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以
解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好
的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定
程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无
法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的
数据库服务器,这是非常大的安全隐患。
昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结
出以下的问题:
第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用
double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一
种很不严肃的作法。
第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发
速度,希望可以组合使用的时候,就会受限。
以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL,
fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个
ORM 框架比较符合我们的需求:
第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝
试DDL操作。
第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以
及为 PG 特别定制的数组类型。
第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操
作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部
分即可,不需要完全学会,上手还是很简单的。
第五,文档比 storm 完整的多,而且现在仍在活跃开发。
第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要
长期维护的企业应用项目,这是正确和严肃的作法。
第七,对特定数据库的特性有良好的支持,还可以扩展。
在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛
用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动
态结构的数据对象。
对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部
换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版
本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还
没有完整实现,现在还不能实用。
===================================
-- 光见贼吃肉,没见贼挨打。
……
劉鑫
March.Liu
No dispones del permiso necesario para enviar entradas.
De:
刘鑫 <march.... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:21:50 +0800
Local: Vie 25 sep 2009 01:21
Asunto: Re: [CPyUG:101839] Re: sqlalchemy、storm和web2py dal的比较报告
2009/9/25 四不象 <tabris17... @gmail.com>
> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
> ----- Original Message -----
> *From:* way wrong <wrongwa... @gmail.com> > *To:* python-cn@googlegroups.com > *Sent:* Friday, September 25, 2009 1:22 PM > *Subject:* [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
> 正考虑使用PostgreSQL中,这么好的资料,俺收藏了
> 2009/9/25 刘鑫 <march.... @gmail.com>
>> 工作项目报告,所以抹掉项目名先,以“X”代之。
>> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
>> ===================================
>> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, >> 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 >> 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 >> 问题是因为使用的ORM框架 storm 有严重的缺陷。
>> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 >> 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 >> 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除 >> 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 >> 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
>> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 >> 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 >> vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 >> DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 >> 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 >> 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 >> X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 >> 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 >> 接提交错误的锁定关系,造成死锁。
>> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 >> 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 >> 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 >> 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 >> 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 >> 数据库服务器,这是非常大的安全隐患。
>> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 >> 出以下的问题:
>> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 >> double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 >> 种很不严肃的作法。
>> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
>> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 >> 速度,希望可以组合使用的时候,就会受限。
>> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, >> fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
>> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 >> ORM 框架比较符合我们的需求:
>> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 >> 试DDL操作。
>> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 >> 及为 PG 特别定制的数组类型。
>> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 >> 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
>> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 >> 分即可,不需要完全学会,上手还是很简单的。
>> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
>> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 >> 长期维护的企业应用项目,这是正确和严肃的作法。
>> 第七,对特定数据库的特性有良好的支持,还可以扩展。
>> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 >> 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 >> 态结构的数据对象。
>> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 >> 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 >> 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
>> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 >> 没有完整实现,现在还不能实用。
>> ===================================
>> -- >> 光见贼吃肉,没见贼挨打。 >> ……
>> 劉鑫 >> March.Liu
-- 光见贼吃肉,没见贼挨打。 …… 劉鑫 March.Liu
No dispones del permiso necesario para enviar entradas.
De:
四不象 <tabris17... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:45:07 +0800
Local: Vie 25 sep 2009 01:45
Asunto: Re: [CPyUG:101842] Re: sqlalchemy、storm和web2py dal的比较报告
汗~手头的项目现在更换数据库还来得及,我考虑一下
----- Original Message -----
From: 刘鑫
To: python-cn@googlegroups.com
Sent: Friday, September 25, 2009 2:21 PM
Subject: [CPyUG:101842] Re: sqlalchemy、storm和web2py dal的比较报告
2009/9/25 四不象 <tabris17... @gmail.com>
这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
----- Original Message ----- From: way wrong To: python-cn@googlegroups.com Sent: Friday, September 25, 2009 1:22 PM
Subject: [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
正考虑使用PostgreSQL中,这么好的资料,俺收藏了
2009/9/25 刘鑫 <march.... @gmail.com>
工作项目报告,所以抹掉项目名先,以“X”代之。
分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
===================================
X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁,
僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多
不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的
问题是因为使用的ORM框架 storm 有严重的缺陷。
首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插
手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说
其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事——除
了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没
有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁
定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行
vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行
DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离
级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问
操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了
X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到
有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链
接提交错误的锁定关系,造成死锁。
第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以
解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好
的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定
程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无
法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的
数据库服务器,这是非常大的安全隐患。
昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结
出以下的问题:
第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用
double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一
种很不严肃的作法。
第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发
速度,希望可以组合使用的时候,就会受限。
以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL,
fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个
ORM 框架比较符合我们的需求:
第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝
试DDL操作。
第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以
及为 PG 特别定制的数组类型。
第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操
作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部
分即可,不需要完全学会,上手还是很简单的。
第五,文档比 storm 完整的多,而且现在仍在活跃开发。
第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要
长期维护的企业应用项目,这是正确和严肃的作法。
第七,对特定数据库的特性有良好的支持,还可以扩展。
在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛
用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动
态结构的数据对象。
对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部
换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版
本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还
没有完整实现,现在还不能实用。
===================================
-- 光见贼吃肉,没见贼挨打。
……
劉鑫
March.Liu
-- 光见贼吃肉,没见贼挨打。
……
劉鑫
March.Liu
No dispones del permiso necesario para enviar entradas.
De:
"@@" <ask... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:34:41 +0800
Local: Vie 25 sep 2009 01:34
Asunto: Re: [CPyUG:101842] Re: sqlalchemy、storm和web2py dal的比较报告
也得看服务器吧。。 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。 关键是facebook这样的都选的是mysql。。。 google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
2009/9/25 刘鑫 <march.... @gmail.com>
> 2009/9/25 四不象 <tabris17... @gmail.com>
>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
No dispones del permiso necesario para enviar entradas.
De:
刘鑫 <march.... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:41:52 +0800
Local: Vie 25 sep 2009 01:41
Asunto: Re: [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
2009/9/25 @@ <ask... @gmail.com>
> 也得看服务器吧。。
> 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
> 关键是facebook这样的都选的是mysql。。。
肯定跟硬件有关,不过我们这边儿的兄弟部门用的服务器也都挺好,NB到4倍以上性能的硬件…… 其实PG的大型应用也很多。只是我们国内介绍的少而已。一个逾二十年历史( http://www.phpx.com/man/Pgsql/history.html) 的主流数据库产品,在用户群方面,还是很有说服力的:)。
> google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
> 2009/9/25 刘鑫 <march.... @gmail.com>
>> 2009/9/25 四不象 <tabris17... @gmail.com>
>>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
>> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
>> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
-- 光见贼吃肉,没见贼挨打。 …… 劉鑫 March.Liu
No dispones del permiso necesario para enviar entradas.
De:
Leo Jay <python.leo... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:42:13 +0800
Local: Vie 25 sep 2009 01:42
Asunto: Re: [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
2009/9/25 @@ <ask... @gmail.com>:
> 也得看服务器吧。。
> 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
> 关键是facebook这样的都选的是mysql。。。
技术力量不一样的,人家不仅用,还有本事做改进。
> google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
-- Best Regards, Leo Jay
No dispones del permiso necesario para enviar entradas.
De:
四不象 <tabris17... @gmail.com>
Fecha: Fri, 25 Sep 2009 15:00:46 +0800
Local: Vie 25 sep 2009 02:00
Asunto: Re: [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
最后还是决定用mysql了,pg以前没用过,还是先学习下再进行实际应用吧。
不过我决定把某表主键从BIGINT改回INT了,如果真的碰到INT主键耗尽,那就说明该换数据库了:)
----- Original Message -----
From: @@
To: python-cn@googlegroups.com
Sent: Friday, September 25, 2009 2:34 PM
Subject: [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
也得看服务器吧。。
我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
关键是facebook这样的都选的是mysql。。。
google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
2009/9/25 刘鑫 <march.... @gmail.com>
2009/9/25 四不象 <tabris17... @gmail.com>
这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
No dispones del permiso necesario para enviar entradas.
De:
刘鑫 <march.... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:48:42 +0800
Local: Vie 25 sep 2009 01:48
Asunto: Re: [CPyUG:101851] Re: sqlalchemy、storm和web2py dal的比较报告
2009/9/25 四不象 <tabris17... @gmail.com>
> 最后还是决定用mysql了,pg以前没用过,还是先学习下再进行实际应用吧。 > 不过我决定把某表主键从BIGINT改回INT了,如果真的碰到INT主键耗尽,那就说明该换数据库了:)
数据库的选项也是个比较重要的事,支持谨慎选择,积极比较的作法:)。
> ----- Original Message -----
> *From:* @@ <ask
... @gmail.com>
> *To:* python-cn@googlegroups.com
> *Sent:* Friday, September 25, 2009 2:34 PM
> *Subject:* [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
> 也得看服务器吧。。 > 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
> 关键是facebook这样的都选的是mysql。。。 > google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
> 2009/9/25 刘鑫 <march.... @gmail.com>
>> 2009/9/25 四不象 <tabris17.cn@ <tabris17... @gmail.com>gmail.com>
>>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
>> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
>> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
-- 光见贼吃肉,没见贼挨打。 …… 劉鑫 March.Liu
No dispones del permiso necesario para enviar entradas.
De:
way wrong <wrongwa... @gmail.com>
Fecha: Fri, 25 Sep 2009 17:40:01 +0800
Local: Vie 25 sep 2009 04:40
Asunto: Re: [CPyUG:101852] Re: sqlalchemy、storm和web2py dal的比较报告
之前见刘鑫同学大力鼓吹emacs,俺两个月前小心地尝试同时用netbeans和emacs,现在基本上已开始学会享受emacs带来的便捷与乐趣了。 接下来,开始尝试刘鑫同学大力鼓吹的pgSQL.
2009/9/25 刘鑫 <march.... @gmail.com>
> 2009/9/25 四不象 <tabris17... @gmail.com>
>> 最后还是决定用mysql了,pg以前没用过,还是先学习下再进行实际应用吧。 >> 不过我决定把某表主键从BIGINT改回INT了,如果真的碰到INT主键耗尽,那就说明该换数据库了:)
> 数据库的选项也是个比较重要的事,支持谨慎选择,积极比较的作法:)。
>> ----- Original Message ----- >> *From:* @@ <ask... @gmail.com> >> *To:* python-cn@googlegroups.com >> *Sent:* Friday, September 25, 2009 2:34 PM >> *Subject:* [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
>> 也得看服务器吧。。 >> 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
>> 关键是facebook这样的都选的是mysql。。。 >> google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
>> 2009/9/25 刘鑫 <march.... @gmail.com>
>>> 2009/9/25 四不象 <tabris17.cn@ <tabris17... @gmail.com>gmail.com>
>>>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
>>> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
>>> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
> -- > 光见贼吃肉,没见贼挨打。 > ……
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
smallfish <smallfish... @gmail.com>
Fecha: Fri, 25 Sep 2009 17:42:19 +0800
Local: Vie 25 sep 2009 04:42
Asunto: Re: [CPyUG:101862] Re: sqlalchemy、storm和web2py dal的比较报告
坚持自己,偶用VIM! -- 如果不能改变结果 那就完善过程 http://hi.baidu.com/smallfish_xy http://blog.csdn.net/smallfish_xy
2009/9/25 way wrong <wrongwa... @gmail.com>
> 之前见刘鑫同学大力鼓吹emacs,俺两个月前小心地尝试同时用netbeans和emacs,现在基本上已开始学会享受emacs带来的便捷与乐趣了。
> 接下来,开始尝试刘鑫同学大力鼓吹的pgSQL.
> 2009/9/25 刘鑫 <march.... @gmail.com>
>> 2009/9/25 四不象 <tabris17... @gmail.com>
>>> 最后还是决定用mysql了,pg以前没用过,还是先学习下再进行实际应用吧。 >>> 不过我决定把某表主键从BIGINT改回INT了,如果真的碰到INT主键耗尽,那就说明该换数据库了:)
>> 数据库的选项也是个比较重要的事,支持谨慎选择,积极比较的作法:)。
>>> ----- Original Message ----- >>> *From:* @@ <ask... @gmail.com> >>> *To:* python-cn@googlegroups.com >>> *Sent:* Friday, September 25, 2009 2:34 PM >>> *Subject:* [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
>>> 也得看服务器吧。。 >>> 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
>>> 关键是facebook这样的都选的是mysql。。。 >>> google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
>>> 2009/9/25 刘鑫 <march.... @gmail.com>
>>>> 2009/9/25 四不象 <tabris17.cn@ <tabris17... @gmail.com>gmail.com>
>>>>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
>>>> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
>>>> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
>> -- >> 光见贼吃肉,没见贼挨打。 >> ……
>> 劉鑫 >> March.Liu
No dispones del permiso necesario para enviar entradas.
De:
Jiahua Huang <jhuangjia... @gmail.com>
Fecha: Fri, 25 Sep 2009 17:44:36 +0800
Local: Vie 25 sep 2009 04:44
Asunto: Re: [CPyUG:101863] Re: sqlalchemy、storm和web2py dal的比较报告
挺小鱼~ 2009/9/25 smallfish <smallfish... @gmail.com>
> 坚持自己,偶用VIM!
No dispones del permiso necesario para enviar entradas.
De:
leopay <leo... @gmail.com>
Fecha: Fri, 25 Sep 2009 22:11:32 +0800
Local: Vie 25 sep 2009 09:11
Asunto: Re: [CPyUG:101864] Re: sqlalchemy、storm和web2py dal的比较报告
偶也用vim, 其实一直想尝试emacs, 但是担心vim转到emacs的成本太高 不过pg的确用的很爽, 自己感觉用起来比mysql 靠普 ==================================== 以上观点仅代表自己的观点和社区无关
2009/9/25 Jiahua Huang <jhuangjia... @gmail.com>
> 挺小鱼~
> 2009/9/25 smallfish <smallfish... @gmail.com>
>> 坚持自己,偶用VIM!
No dispones del permiso necesario para enviar entradas.
De:
suhanwu <suha... @gmail.com>
Fecha: Fri, 25 Sep 2009 07:39:52 -0700 (PDT)
Local: Vie 25 sep 2009 09:39
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
一直关注PG 近期也计划在个人的项目上用PG.
不过公司一直用Oracle.
On 9月25日, 下午10时11分, leopay <leo... @gmail.com> wrote:
> 偶也用vim, 其实一直想尝试emacs, 但是担心vim转到emacs的成本太高
> 不过pg的确用的很爽, 自己感觉用起来比mysql 靠普
> ==================================== > 以上观点仅代表自己的观点和社区无关
> 2009/9/25 Jiahua Huang <jhuangjia... @gmail.com>
> > 挺小鱼~
> > 2009/9/25 smallfish <smallfish... @gmail.com>
> >> 坚持自己,偶用VIM!- 隐藏被引用文字 -
> - 显示引用的文字 -
No dispones del permiso necesario para enviar entradas.
De:
TodJiang <sunyanzicc.... @gmail.com>
Fecha: Fri, 25 Sep 2009 09:20:18 -0700 (PDT)
Local: Vie 25 sep 2009 11:20
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
PG的文档太少, 我之前想看看PG优化的东西, 网上search半天, 找到实用的也不太多。 公司内部的Trac 用Postgres 时候, 发现有时候出现大量线程堵塞http://trac.edgewall.org/ticket/ 8443, 目前trac项目还没fix。 后来发现公司内部的同事开代理上就会出现那个问题, 具体原因还在寻找。 MySQL的文档还是比较多, 性能需要自己实际动手才知道哪个好。
On 9月25日, 下午2时21分, 刘鑫 <march.... @gmail.com> wrote:
> 2009/9/25 四不象 <tabris17
... @gmail.com>
> > 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。 > 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化......
> > ----- Original Message -----
> > *From:* way wrong <wrongwa... @gmail.com> > > *To:* python-cn@googlegroups.com > > *Sent:* Friday, September 25, 2009 1:22 PM > > *Subject:* [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
> > 正考虑使用PostgreSQL中,这么好的资料,俺收藏了
> > 2009/9/25 刘鑫 <march.... @gmail.com>
> >> 工作项目报告,所以抹掉项目名先,以"X"代之。
> >> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> >> ===================================
> >> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > >> 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > >> 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > >> 问题是因为使用的ORM框架 storm 有严重的缺陷。
> >> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > >> 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > >> 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事----除 > >> 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > >> 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> >> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > >> 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > >> vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > >> DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > >> 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > >> 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > >> X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > >> 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > >> 接提交错误的锁定关系,造成死锁。
> >> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > >> 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > >> 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > >> 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > >> 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > >> 数据库服务器,这是非常大的安全隐患。
> >> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > >> 出以下的问题:
> >> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > >> double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > >> 种很不严肃的作法。
> >> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> >> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > >> 速度,希望可以组合使用的时候,就会受限。
> >> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > >> fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> >> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > >> ORM 框架比较符合我们的需求:
> >> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > >> 试DDL操作。
> >> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > >> 及为 PG 特别定制的数组类型。
> >> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > >> 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> >> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > >> 分即可,不需要完全学会,上手还是很简单的。
> >> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> >> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > >> 长期维护的企业应用项目,这是正确和严肃的作法。
> >> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> >> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > >> 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > >> 态结构的数据对象。
> >> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > >> 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > >> 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> >> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > >> 没有完整实现,现在还不能实用。
> >> ===================================
> >> -- > >> 光见贼吃肉,没见贼挨打。 > >> ......
> >> 劉鑫 > >> March.Liu
> -- > 光见贼吃肉,没见贼挨打。 > ......
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
Leo Jay <python.leo... @gmail.com>
Fecha: Sat, 26 Sep 2009 00:39:54 +0800
Local: Vie 25 sep 2009 11:39
Asunto: Re: [CPyUG:101877] Re: sqlalchemy、storm和web2py dal的比较报告
No dispones del permiso necesario para enviar entradas.
De:
Jerry <jerryji1... @gmail.com>
Fecha: Fri, 25 Sep 2009 13:54:49 -0700 (PDT)
Local: Vie 25 sep 2009 15:54
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
跟个(冷)笑话,FriendFeed(那个刚被Facebook收的)也选MySQL,但是不当_关系_数据库用,好比买辆车,引擎扔掉,就是个满不 错的米缸 -- http://bret.appspot.com/entry/how-friendfeed-uses-mysql
Jerry
(并非嘲笑FriendFeed或MySQL)
On Sep 25, 2:21 pm, 刘鑫 <march.... @gmail.com> wrote:
> 2009/9/25 四不象 <tabris17
... @gmail.com>
> > 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。 > 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化......
> > ----- Original Message -----
> > *From:* way wrong <wrongwa... @gmail.com> > > *To:* python-cn@googlegroups.com > > *Sent:* Friday, September 25, 2009 1:22 PM > > *Subject:* [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
> > 正考虑使用PostgreSQL中,这么好的资料,俺收藏了
> > 2009/9/25 刘鑫 <march.... @gmail.com>
> >> 工作项目报告,所以抹掉项目名先,以"X"代之。
> >> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> >> ===================================
> >> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > >> 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > >> 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > >> 问题是因为使用的ORM框架 storm 有严重的缺陷。
> >> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > >> 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > >> 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事----除 > >> 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > >> 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> >> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > >> 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > >> vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > >> DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > >> 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > >> 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > >> X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > >> 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > >> 接提交错误的锁定关系,造成死锁。
> >> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > >> 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > >> 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > >> 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > >> 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > >> 数据库服务器,这是非常大的安全隐患。
> >> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > >> 出以下的问题:
> >> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > >> double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > >> 种很不严肃的作法。
> >> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> >> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > >> 速度,希望可以组合使用的时候,就会受限。
> >> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > >> fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> >> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > >> ORM 框架比较符合我们的需求:
> >> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > >> 试DDL操作。
> >> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > >> 及为 PG 特别定制的数组类型。
> >> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > >> 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> >> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > >> 分即可,不需要完全学会,上手还是很简单的。
> >> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> >> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > >> 长期维护的企业应用项目,这是正确和严肃的作法。
> >> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> >> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > >> 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > >> 态结构的数据对象。
> >> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > >> 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > >> 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> >> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > >> 没有完整实现,现在还不能实用。
> >> ===================================
> >> -- > >> 光见贼吃肉,没见贼挨打。 > >> ......
> >> 劉鑫 > >> March.Liu
> -- > 光见贼吃肉,没见贼挨打。 > ......
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
Jerry <jerryji1... @gmail.com>
Fecha: Fri, 25 Sep 2009 14:07:01 -0700 (PDT)
Local: Vie 25 sep 2009 16:07
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
Trac的个人问题不能算到PostgreSQL头上,我个人从来没感觉PostgreSQL的(英文)文档不够用,至于它和MySQL的holy war,这儿再给一个 -- http://stackoverflow.com/questions/110927/do-you-recommend-postgresql...
Jerry
On Sep 26, 12:20 am, TodJiang <sunyanzicc.... @gmail.com> wrote:
> PG的文档太少, 我之前想看看PG优化的东西, 网上search半天, 找到实用的也不太多。
> 公司内部的Trac 用Postgres 时候, 发现有时候出现大量线程堵塞
http://trac.edgewall.org/ticket/ > 8443, 目前trac项目还没fix。
> 后来发现公司内部的同事开代理上就会出现那个问题, 具体原因还在寻找。
> MySQL的文档还是比较多, 性能需要自己实际动手才知道哪个好。
> On 9月25日, 下午2时21分, 刘鑫 <march.... @gmail.com> wrote:
> > 2009/9/25 四不象 <tabris17... @gmail.com>
> > > 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
> > 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。 > > 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化......
> > > ----- Original Message -----
> > > *From:* way wrong <wrongwa... @gmail.com> > > > *To:* python-cn@googlegroups.com > > > *Sent:* Friday, September 25, 2009 1:22 PM > > > *Subject:* [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
> > > 正考虑使用PostgreSQL中,这么好的资料,俺收藏了
> > > 2009/9/25 刘鑫 <march.... @gmail.com>
> > >> 工作项目报告,所以抹掉项目名先,以"X"代之。
> > >> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> > >> ===================================
> > >> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > > >> 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > > >> 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > > >> 问题是因为使用的ORM框架 storm 有严重的缺陷。
> > >> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > > >> 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > > >> 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事----除 > > >> 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > > >> 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> > >> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > > >> 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > > >> vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > > >> DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > > >> 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > > >> 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > > >> X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > > >> 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > > >> 接提交错误的锁定关系,造成死锁。
> > >> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > > >> 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > > >> 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > > >> 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > > >> 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > > >> 数据库服务器,这是非常大的安全隐患。
> > >> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > > >> 出以下的问题:
> > >> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > > >> double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > > >> 种很不严肃的作法。
> > >> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> > >> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > > >> 速度,希望可以组合使用的时候,就会受限。
> > >> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > > >> fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> > >> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > > >> ORM 框架比较符合我们的需求:
> > >> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > > >> 试DDL操作。
> > >> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > > >> 及为 PG 特别定制的数组类型。
> > >> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > > >> 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> > >> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > > >> 分即可,不需要完全学会,上手还是很简单的。
> > >> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> > >> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > > >> 长期维护的企业应用项目,这是正确和严肃的作法。
> > >> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> > >> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > > >> 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > > >> 态结构的数据对象。
> > >> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > > >> 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > > >> 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> > >> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > > >> 没有完整实现,现在还不能实用。
> > >> ===================================
> > >> -- > > >> 光见贼吃肉,没见贼挨打。 > > >> ......
> > >> 劉鑫 > > >> March.Liu
> > -- > > 光见贼吃肉,没见贼挨打。 > > ......
> > 劉鑫 > > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
光风 <breeze.guangf... @gmail.com>
Fecha: Sat, 26 Sep 2009 11:01:20 +0800
Local: Vie 25 sep 2009 22:01
Asunto: Re: [CPyUG:101863] Re: sqlalchemy、storm和web2py dal的比较报告
Emacs党奸笑路过 2009/9/25 smallfish <smallfish... @gmail.com>
> 坚持自己,偶用VIM!
> -- > 如果不能改变结果 那就完善过程 > http://hi.baidu.com/smallfish_xy > http://blog.csdn.net/smallfish_xy
> 2009/9/25 way wrong <wrongwa... @gmail.com>
> 之前见刘鑫同学大力鼓吹emacs,俺两个月前小心地尝试同时用netbeans和emacs,现在基本上已开始学会享受emacs带来的便捷与乐趣了。
>> 接下来,开始尝试刘鑫同学大力鼓吹的pgSQL.
>> 2009/9/25 刘鑫 <march.... @gmail.com>
>>> 2009/9/25 四不象 <tabris17... @gmail.com>
>>>> 最后还是决定用mysql了,pg以前没用过,还是先学习下再进行实际应用吧。 >>>> 不过我决定把某表主键从BIGINT改回INT了,如果真的碰到INT主键耗尽,那就说明该换数据库了:)
>>> 数据库的选项也是个比较重要的事,支持谨慎选择,积极比较的作法:)。
>>>> ----- Original Message ----- >>>> *From:* @@ <ask... @gmail.com> >>>> *To:* python-cn@googlegroups.com >>>> *Sent:* Friday, September 25, 2009 2:34 PM >>>> *Subject:* [CPyUG:101845] Re: sqlalchemy、storm和web2py dal的比较报告
>>>> 也得看服务器吧。。 >>>> 我开始想试试pg的 不过发现mysql一个现有的库 转到pg 一点也不容易。。弄了1 2天 放弃了。。
>>>> 关键是facebook这样的都选的是mysql。。。 >>>> google也是为mysql出过patch,没看到他为pg出patch(也许有 没看到)
>>>> 2009/9/25 刘鑫 <march.... @gmail.com>
>>>>> 2009/9/25 四不象 <tabris17.cn@ <tabris17... @gmail.com>gmail.com>
>>>>>> 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
>>>>> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。
>>>>> 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化……
>>> -- >>> 光见贼吃肉,没见贼挨打。 >>> ……
>>> 劉鑫 >>> March.Liu
No dispones del permiso necesario para enviar entradas.
De:
ronin <2903... @qq.com>
Fecha: Fri, 25 Sep 2009 20:06:01 -0700 (PDT)
Local: Vie 25 sep 2009 22:06
Asunto: Re: sqlalchemy、storm和web2py dal的比较报告
这段时间准备为项目选型,已经决定有用python,框架用web2py(uliweb好像还没有人用吧,看了PPT很感兴趣),数据库我看了网上资 料,说是select性能比myisam差很多,我想现在web2应用大多数操作都会以myisam,这样的话会不会pg性能很差? On 9月25日, 下午2时21分, 刘鑫 <march.... @gmail.com> wrote:
> 2009/9/25 四不象 <tabris17
... @gmail.com>
> > 这个数据库还没在项目中用过,听说很牛X,不过好像性能方面被人诟病,不知道用在大型网站的CMS系统中合不合适
> 跟你说个笑话吧,我们这边儿有个MySQL的应用,几经优化,日处理量还是卡在二百万(我信任同事在MySQL优化方面的水平,这种海量数据的处理经验,在一般 公司不容易见到)左右。 > 我在网上搜了一下,有个老外去年发过一封邮件,大意是:此人自称PG菜鸟,建了一个跟我们的应用类似的东西(那张表比我们的还复杂多了),在未经优化的情况下, 日处理量卡在了八百万左右,上来问问大家怎么优化......
> > ----- Original Message -----
> > *From:* way wrong <wrongwa... @gmail.com> > > *To:* python-cn@googlegroups.com > > *Sent:* Friday, September 25, 2009 1:22 PM > > *Subject:* [CPyUG:101833] Re: sqlalchemy、storm和web2py dal的比较报告
> > 正考虑使用PostgreSQL中,这么好的资料,俺收藏了
> > 2009/9/25 刘鑫 <march.... @gmail.com>
> >> 工作项目报告,所以抹掉项目名先,以"X"代之。
> >> 分割线内内容仅代表个人意见,与所供职企业及参与社区无关。
> >> ===================================
> >> X 从很早的时候就出现各种数据库访问错误。包括链接数占用过多,死锁, > >> 僵尸事务等。本周我集中梳理了一遍代码。我认为,虽然数据库设计方面有诸多 > >> 不合理之处,但是这些不合理主要影响业务错误,造成 X 性能和使用上的 > >> 问题是因为使用的ORM框架 storm 有严重的缺陷。
> >> 首先,storm 对数据库架构的同步有非常奇怪的设定。它不自动同步表结构,却插 > >> 手外键关联关系。强制要求外键必须都是级联更新、级联删除、set null。且不说 > >> 其设定中有自相矛盾之处,本身在MIS系统中做级联删除就是一件很危险的事----除 > >> 了系统维护、分表,MIS系统不应该删除任何数据。 storm 从一开始设计恐怕就没 > >> 有考虑企业级应用,但是对于web 开放式应用,storm 对外键的依赖又太笨重了。
> >> 其次,storm 在联接数据库后应该会有 DDL 操作(即修改数据库结构)或独占锁 > >> 定事务,此推断的证据在于用 storm 联接到 S 库后, S 无法进行 > >> vacuumdb -a -f 处理。而根据 Postgres 手册,PG只有在遇到有链接正在进行 > >> DDL 操作时,才会产生库级锁,造成 vacuum 操作无法进行(或手工建立一个隔离 > >> 级别相当的事务锁定)。作为世界上并发能力最强的数据库产品,正常的数据访问 > >> 操作与 vacuum 根本不会冲突,热处理资源回收正是 PG 独到的特性。这样造成了 > >> X 应用频繁用光所有的链接数,还在数据库服务器遗留僵尸进程。我观察到 > >> 有僵死十几二十天没有完成过的 X 链接,这应该是因为同时多个 storm 链 > >> 接提交错误的锁定关系,造成死锁。
> >> 第三,storm 如果可以象 DAL 那样,明确设定不同步数据库,以上问题至少可以 > >> 解决一半,但是它没有链接配置参数。这造成了我们对其出现的问题无法进行友好 > >> 的调整。现在同事在 X 的 controll 层添加了强制的 commit 操作,一定 > >> 程度上减少了死链,但是我仍然观察到有点击 X 页面(在测试环境下)无 > >> 法响应,甚至造成数据库服务器闪断重启的现象,对于同时运营三十几个数据库的 > >> 数据库服务器,这是非常大的安全隐患。
> >> 昨天我尝试将 X 的数据库访问层迁移至 web2py DAL,经过一天尝试,总结 > >> 出以下的问题:
> >> 第一,DAL 缺少精确实数计算类型,它不支持 Numeric 或 Decimal,只能用 > >> double,这是一个相当大的安全隐患,对于涉及财会计算的应用,使用浮点数是一 > >> 种很不严肃的作法。
> >> 第二,DAL 不支持数组和大数据类型,此类字段在 X 中有几处应用。
> >> 第三,DAL 对原生SQL的支持比较初级,虽然也可以使用,但是有时需要兼顾开发 > >> 速度,希望可以组合使用的时候,就会受限。
> >> 以上问题不是不能解决,但是需要修改 DAL 本身。虽然我一直有计划改造 DAL, > >> fork 一个对 PG 有良好支持的分支出来。但是这显然需要更多的开发时间。
> >> 昨天我详细查阅了一下 sqlalchemy 的文档,进行了一些简单的尝试,感觉这个 > >> ORM 框架比较符合我们的需求:
> >> 第一,sqlachemy 对数据库链接的隔离级别和事务有良好的控制,默认也不会去尝 > >> 试DDL操作。
> >> 第二,sqlachemy 有非常丰富的数据类型支持,包括BLOB,Decimal/Numeric,以 > >> 及为 PG 特别定制的数组类型。
> >> 第三,sqlachemy 的查询类似 DAL (很可能DAL学习自sqlachemy),对各种查询操 > >> 作有良好的支持,还可以嵌入 SQL 片段,也可以方便的直接传入 SQL。
> >> 第四,sqlachemy 其实并不难学,它的功能虽然丰富,但是只掌握自己要用到的部 > >> 分即可,不需要完全学会,上手还是很简单的。
> >> 第五,文档比 storm 完整的多,而且现在仍在活跃开发。
> >> 第六,数据存储模型与业务模型分离,虽然看起来有重复劳动,但是对于一个需要 > >> 长期维护的企业应用项目,这是正确和严肃的作法。
> >> 第七,对特定数据库的特性有良好的支持,还可以扩展。
> >> 在使用 sqlachemy 时,我们还可以结合 web2py 原有的一些优秀工具,例如广泛 > >> 用于 DAL 的storage类型,这是一个类似 JS Object 的智能对象类型,很适合动 > >> 态结构的数据对象。
> >> 对于 X 项目的数据访问层重构,我评估工作量至少在一周左右。如果全部 > >> 换用 sqlachemy ,可以一劳永逸的解决数据库访问的问题,甚至 S 的后续版 > >> 本,我也建议尝试使用这个框架,毕竟这比 hack dal 要方便一些。
> >> sqlachemy 当前的稳定版本是 0.5.6 ,我昨晚试验了开发中的 0.6 ,发现功能还 > >> 没有完整实现,现在还不能实用。
> >> ===================================
> >> -- > >> 光见贼吃肉,没见贼挨打。 > >> ......
> >> 劉鑫 > >> March.Liu
> -- > 光见贼吃肉,没见贼挨打。 > ......
> 劉鑫 > March.Liu
No dispones del permiso necesario para enviar entradas.
De:
limodou <limo... @gmail.com>
Fecha: Sat, 26 Sep 2009 11:13:00 +0800
Asunto: Re: [CPyUG:101888] Re: sqlalchemy、storm和web2py dal的比较报告
No dispones del permiso necesario para enviar entradas.