SlideShare a Scribd company logo
Python 与数据库

刘鑫 <liuxin2@kingsoft.com>

第三讲:从 SQLAlchemy 谈存储层架构


    September 1, 2010




                        .   .   .   .   .   .
前情回顾




       .   .   .   .   .   .
Python 访问关系数据库有多种方法




               .   .   .   .   .   .
基础技能




       标准接口 DBAPI




                    .   .   .   .   .   .
有争议但值得关注




           ORM




                 .   .   .   .   .   .
推荐的 ORM




          SQLAlchemy




                       .   .   .   .   .   .
常见的与数据库有关的问题




          .    .   .   .   .   .
开发效率和代码质量




            .   .   .   .   .   .
运行效率




       .   .   .   .   .   .
其实这个不太常见




           可移植性




                  .   .   .   .   .   .
可重用性




       .   .   .   .   .   .
资源管理




       .   .   .   .   .   .
解决之道?




        .   .   .   .   .   .
良好的抽象




        .   .   .   .   .   .
适当组件化




        .   .   .   .   .   .
ORM and DAL




              .   .   .   .   .   .
Python 数据库访问工具的典范




              .     .   .   .   .   .
SQLAlchemy




             .   .   .   .   .   .
SQLAlchemy




             Figure: SQLAlchemy 组成


                                 .   .   .   .   .   .
模型层




      .   .   .   .   .   .
模型层




                    {
              映射     业务模型,    用户自定义的业务类
      Mapping − −
               −→
                     Model,   数据模型




                                .   .   .   .   .   .
模型层




              
              Table,
                          数据表映射
              
              
              Field,      字段及复合列
      数据模型 −→
              Query,
                          允许映射查询
              
              
              Relation,   各种关系




                            .   .   .   .   .   .
映射工具




       Mapping 将业务规则映射到模型




                      .   .   .   .   .   .
映射工具




       MetaData 将模型与操作映射到 Engine




                          .   .    .   .   .   .
映射工具




       MetaData 反射元信息




                    .   .   .   .   .   .
会话层




      .   .   .   .   .   .
会话层




      Session 是 SQLALchemy 体系中的架构核心




                           .   .   .   .   .   .
可以管理多个 Engine




                .   .   .   .   .   .
分布式事务




        .   .   .   .   .   .
两阶段提交




        .   .   .   .   .   .
分布式事务




 e n g i n e 1 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : / / db1 ’ )
 e n g i n e 2 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : / / db2 ’ )
 S e s s i o n = s e s s i o n m a k e r ( t w o p h a s e=True )
 S e s s i o n . c o n f i g u r e ( b i n d s ={U s e r : e n g i n e 1 , Account : e n g i n
 session = Session ()




                                                         .    .     .     .     .     .
SQL Expression




                 .   .   .   .   .   .
智能数据对象




         .   .   .   .   .   .
连接层




      .   .   .   .   .   .
Engine 可以作为会话引擎




             .    .   .   .   .   .
Engine




         也可以独立使用




                   .   .   .   .   .   .
Engine




         连接池




               .   .   .   .   .   .
Engine




         Connection 管理




                         .   .   .   .   .   .
Engine




         数据库元信息




                  .   .   .   .   .   .
Connection




             .   .   .   .   .   .
Connection




             强化的 DBAPI Connection+cursor




                                   .   .   .   .   .   .
Connection




             参数安全




                    .   .   .   .   .   .
Connection




             更友好的结果集




                       .   .   .   .   .   .
Connection




             完整的事务控制




                       .   .   .   .   .   .
Connection




             可理解模型操作




                       .   .   .   .   .   .
经典示范




       .   .   .   .   .   .
Pylons




         .   .   .   .   .   .
turbogears




             .   .   .   .   .   .
怪·力·乱·神




          .   .   .   .   .   .
Socrates
http://bitbucket.org/March/socrates




                          .   .   .   .   .   .
doctest




          .   .   .   .   .   .
Storage. init




                运行时建模




                        .   .   .   .   .   .
Storage.registeType




                      动态建模




                             .   .   .   .   .   .
Subject




          自定义容器




                  .   .   .   .   .   .
Segment/Subject




                  业务规则封装




                           .   .   .   .   .   .
一家之言




       面向数据库的架构设计




                .   .   .   .   .   .
有效管理资源




         .   .   .   .   .   .
合理建模,防止过度设计




          .   .   .   .   .   .
保持敏捷,不过度优化




         .   .   .   .   .   .
基于运行时环境设计




            .   .   .   .   .   .
框架?




      .   .   .   .   .   .
操作系统?




        .   .   .   .   .   .
HTTP 服务和加载模式?




            .   .   .   .   .   .
多线程 vs 多进程?




              .   .   .   .   .   .
多进程




      尽快完成




             .   .   .   .   .   .
多进程




      保持和控制资源




                .   .   .   .   .   .
多进程




      干净回收




             .   .   .   .   .   .
多线程




      资源池




            .   .   .   .   .   .
多线程




      警惕争用与死锁




                .   .   .   .   .   .
多线程




      防止并发过度




               .   .   .   .   .   .
如何管好数据,是一门艺术




          .    .   .   .   .   .
谢谢大家!




        再见!




              .   .   .   .   .   .

More Related Content

PDF
PostgreSQL Introduction V0.1
PPT
1 Python简介
PPT
2 Python开发工具链
PDF
Python 数据库技术讲座(二)
PDF
Python 数据库技术讲座(一)
PDF
PostgreSQL 9 Standby
PDF
saveMLAK(20110919)
PPTX
PostgreSQL Introduction V0.1
1 Python简介
2 Python开发工具链
Python 数据库技术讲座(二)
Python 数据库技术讲座(一)
PostgreSQL 9 Standby
saveMLAK(20110919)

Similar to Python 数据库技术第三讲 (20)

PDF
软件开发工程化的个人体验
PDF
C/C++调试、跟踪及性能分析工具综述
PDF
Xcode tutorial
PDF
Twido programming guide
PDF
分布式索引构建
PDF
Emacs Introduction
PDF
OI算法竞赛中树形数据结构
PDF
《云计算核心技术剖析》Mini书
PDF
C++工程实践
PDF
Unixtoolbox zh cn
PDF
unixtoolbox_zh_CN
PPT
Mybatis学习培训
PDF
Glibc memory management
PDF
基于MySQL开放复制协议的同步扩展
DOC
Excel+ppt+word2003使用技巧方法大全
DOCX
Linux 期末報告
PDF
Tcfsh bootcamp day2
PDF
8门编程语言的设计思考
PDF
Python速成指南
PDF
2011 06-12-lamp-mysql-顾春江
软件开发工程化的个人体验
C/C++调试、跟踪及性能分析工具综述
Xcode tutorial
Twido programming guide
分布式索引构建
Emacs Introduction
OI算法竞赛中树形数据结构
《云计算核心技术剖析》Mini书
C++工程实践
Unixtoolbox zh cn
unixtoolbox_zh_CN
Mybatis学习培训
Glibc memory management
基于MySQL开放复制协议的同步扩展
Excel+ppt+word2003使用技巧方法大全
Linux 期末報告
Tcfsh bootcamp day2
8门编程语言的设计思考
Python速成指南
2011 06-12-lamp-mysql-顾春江
Ad

More from March Liu (15)

PDF
Jaskell Core Parsec
PDF
轻量级文本工具集
PDF
奇点与未来
PDF
尼尔盖曼的美国众神
PDF
创业项目中常见的技术和管理债务
PPT
It工程师的职业成长
PDF
Socrates Used PostgreSQL and SQLAlchemy
PDF
PostgreSQL 9 1 新特性
PDF
Python 数据库技术
PDF
PostgreSQL 9 的 standby 集群实践
PPT
基于 PostgreSQL 的关系型数据库方案
PDF
About Me
PPT
3 Python开发风格与建议
PDF
Postgre sql intro 0
PDF
Perl 6 news at 2010-06
Jaskell Core Parsec
轻量级文本工具集
奇点与未来
尼尔盖曼的美国众神
创业项目中常见的技术和管理债务
It工程师的职业成长
Socrates Used PostgreSQL and SQLAlchemy
PostgreSQL 9 1 新特性
Python 数据库技术
PostgreSQL 9 的 standby 集群实践
基于 PostgreSQL 的关系型数据库方案
About Me
3 Python开发风格与建议
Postgre sql intro 0
Perl 6 news at 2010-06
Ad

Recently uploaded (20)

PPTX
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
PPTX
3分钟读懂皇家艺术学院毕业证RCA毕业证学历认证
PPTX
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
PPTX
3分钟读懂渥太华大学毕业证UO毕业证学历认证
PPTX
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
PPTX
3分钟读懂伦敦政治经济学院毕业证LSE毕业证学历认证
PPTX
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
PPTX
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
PDF
黑客出手,分数我有!安全可靠的技术支持,让你的GPA瞬间提升,留学之路更加顺畅!【微信:viphuzhao】
PPTX
3分钟读懂南威尔士大学毕业证UCB毕业证学历认证
PPTX
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
PPTX
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
PPTX
ONU and OLT from Baudcom Jenny training PPT
PPTX
A Digital Transformation Methodology.pptx
PDF
01_Course_Introduction(20210916課後更新).pdf
PPTX
3分钟读懂索尔福德大学毕业证Salford毕业证学历认证
PPTX
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
PPTX
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
PPTX
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
3分钟读懂皇家艺术学院毕业证RCA毕业证学历认证
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
3分钟读懂渥太华大学毕业证UO毕业证学历认证
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
3分钟读懂伦敦政治经济学院毕业证LSE毕业证学历认证
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
黑客出手,分数我有!安全可靠的技术支持,让你的GPA瞬间提升,留学之路更加顺畅!【微信:viphuzhao】
3分钟读懂南威尔士大学毕业证UCB毕业证学历认证
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
ONU and OLT from Baudcom Jenny training PPT
A Digital Transformation Methodology.pptx
01_Course_Introduction(20210916課後更新).pdf
3分钟读懂索尔福德大学毕业证Salford毕业证学历认证
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证

Python 数据库技术第三讲