Wil*_*ill 16 python database rdbms scalability twisted
Twisted应用程序有一个API可以以可扩展的方式与数据库通信:twisted.enterprise.dbapi
令人困惑的是,要选择哪个数据库?
该数据库将有一个Twisted应用程序,主要是进行插入和更新以及相对较少的选择,然后其他严格只读客户端正在访问数据库直接进行选择.
(只读用户不一定选择Twisted应用程序正在插入的数据;它不像数据库被用作消息队列一样)
我的理解 - 我想纠正/建议 - 是:
Jea*_*one 15
可扩展性
twisted.enterprise.adbapi
不一定是以可伸缩的方式与数据库通信的接口.可伸缩性是您需要单独解决的问题.twisted.enterprise.adbapi
真正声称要做的唯一事情就是让你使用DB-API 2.0模块,而没有通常所暗示的阻塞.
Postgres的
是.这是正确的答案.我不认为所有的Python绑定都是弃用软件 - 例如,psycopg2似乎是积极维护的.事实上,他们刚刚为异步访问添加了一些新的绑定,Twisted最终可能会提供一个接口.
SQLite3也很酷.您可能希望在您的应用中使用Postgres或SQLite3; 例如,即使你想针对Postgres进行部署,你的单元测试肯定会更快地运行SQLite3.
其他?
很难知道另一个数据库是否完全(非关系型)可能比Postgres更适合您的应用程序.这在很大程度上取决于您要存储的特定数据以及您需要针对它运行的查询.如果您的数据库中存在有趣的关系,Postgres确实是一个非常好的答案.如果您的所有查询看起来像"SELECT foo,bar FROM baz",那么可能会有一个更简单,更高性能的选项.
Eri*_*lun 10
有txpostgres
一个代替twisted.enterprise.dbapi
线程池和阻塞DB IO的库,它是完全异步的,利用内置的异步功能psycopg2
.
我们在大公司的生产中使用它,到目前为止它一直很好地为我们服务.此外,它已经积极开发 - 我们最近报告的一个错误很快就得到了解决.