Python 数据库技术第三讲
description
Transcript of Python 数据库技术第三讲
. . . . . .
前情回顾
. . . . . .
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
. . . . . .
分布式事务
. . . . . .
两阶段提交
. . . . . .
分布式事务
eng ine1 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : // db1 ’ )eng ine2 = 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 = se s s i onmake r ( twophase=True )S e s s i o n . c o n f i g u r e ( b i nd s={User : eng ine1 , Account : eng ine2 })s e s s i o n = S e s s i o n ( )
. . . . . .
SQL Expression
. . . . . .
智能数据对象
. . . . . .
连接层
. . . . . .
Engine 可以作为会话引擎
. . . . . .
Engine
也可以独立使用
. . . . . .
Engine
连接池
. . . . . .
Engine
Connection 管理
. . . . . .
Engine
数据库元信息
. . . . . .
Connection
. . . . . .
Connection
强化的 DBAPI Connection+cursor
. . . . . .
Connection
参数安全
. . . . . .
Connection
更友好的结果集
. . . . . .
Connection
完整的事务控制
. . . . . .
Connection
可理解模型操作
. . . . . .
经典示范
. . . . . .
Pylons
. . . . . .
turbogears
. . . . . .
怪 · 力 · 乱 · 神
. . . . . .
doctest
. . . . . .
Storage. init
运行时建模
. . . . . .
Storage.registeType
动态建模
. . . . . .
Subject
自定义容器
. . . . . .
Segment/Subject
业务规则封装
. . . . . .
一家之言
面向数据库的架构设计
. . . . . .
有效管理资源
. . . . . .
合理建模,防止过度设计
. . . . . .
保持敏捷,不过度优化
. . . . . .
基于运行时环境设计
. . . . . .
框架?
. . . . . .
操作系统?
. . . . . .
HTTP 服务和加载模式?
. . . . . .
多线程 vs 多进程?
. . . . . .
多进程
尽快完成
. . . . . .
多进程
保持和控制资源
. . . . . .
多进程
干净回收
. . . . . .
多线程
资源池
. . . . . .
多线程
警惕争用与死锁
. . . . . .
多线程
防止并发过度
. . . . . .
如何管好数据,是一门艺术
. . . . . .
谢谢大家!
再见!