......Python与数据库刘鑫liuxin2@kingsoft.com第三讲:从SQLAlchemy谈存储层架构September1,2010......前情回顾......Python访问关系数据库有多种方法......基础技能标准接口DBAPI......有争议但值得关注ORM......推荐的ORMSQLAlchemy......常见的与数据库有关的问题......开发效率和代码质量......运行效率......其实这个不太常见可移植性......可重用性......资源管理......解决之道?......良好的抽象......适当组件化......ORMandDAL......Python数据库访问工具的典范......SQLAlchemy......SQLAlchemyFigure:SQLAlchemy组成......模型层......模型层Mapping映射 !{业务模型;用户自定义的业务类Model;数据模型......模型层数据模型 !Table;数据表映射Field;字段及复合列Query;允许映射查询Relation;各种关系......映射工具Mapping将业务规则映射到模型......映射工具MetaData将模型与操作映射到Engine......映射工具MetaData反射元信息......会话层......会话层Session是SQLALchemy体系中的架构核心......可以管理多个Engine......分布式事务......两阶段提交......分布式事务engine1=createengine(’postgresql://db1’)engine2=createengine(’postgresql://db2’)Session=sessionmaker(twophase=True)Session.configure(binds=fUser:engine1,Account:engine2g)session=Session()......SQLExpression......智能数据对象......连接层......Engine可以作为会话引擎......Engine也可以独立使用......Engine连接池......EngineConnection管理......Engine数据库元信息......Connection......Connection强化的DBAPIConnection+cursor......Connection参数安全......Connection更友好的结果集......Connection完整的事务控制......Connection可理解模型操作......经典示范......Pylons......turbogears......怪·力·乱·神......Socrates运行时建模......Storage.registeType动态建模......Subject自定义容器......Segment/Subject业务规则封装......一家之言面向数据库的架构设计......有效管理资源......合理建模,防止过度设计......保持敏捷,不过度优化......基于运行时环境设计......框架?......操作系统?......HTTP服务和加载模式?......多线程vs多进程?......多进程尽快完成......多进程保持和控制资源......多进程干净回收......多线程资源池......多线程警惕争用与死锁......多线程防止并发过度......如何管好数据,是一门艺术......谢谢大家!再见!