PythonTwisted数据库
Twisted应用程序有一个API,可用于以可扩展的方式与数据库通信: 令人困惑的是,选择哪个数据库 数据库将有一个Twisted应用程序,它主要进行插入和更新,选择相对较少,然后是其他直接访问数据库的严格只读客户端进行选择 (只读用户不一定选择Twisted应用程序正在插入的数据;它不像数据库被用作消息队列) 我的理解-我希望纠正/建议--是:PythonTwisted数据库,python,database,scalability,rdbms,twisted,Python,Database,Scalability,Rdbms,Twisted,Twisted应用程序有一个API,可用于以可扩展的方式与数据库通信: 令人困惑的是,选择哪个数据库 数据库将有一个Twisted应用程序,它主要进行插入和更新,选择相对较少,然后是其他直接访问数据库的严格只读客户端进行选择 (只读用户不一定选择Twisted应用程序正在插入的数据;它不像数据库被用作消息队列) 我的理解-我希望纠正/建议--是: Postgres是一个很好的数据库,但是几乎所有的Python绑定——其中有一个令人困惑的迷宫——都是废弃软件 postgres也有,但这会引起很多
- Postgres是一个很好的数据库,但是几乎所有的Python绑定——其中有一个令人困惑的迷宫——都是废弃软件
- postgres也有,但这会引起很多关于自己进行连接池和其他事情的噪音;这是否与Twisted异步数据库连接池等优雅/有用/透明地共存
- SQLLite是一个很好的数据库,但如果以多用户的方式使用,它会锁定整个数据库,因此性能会受到我设想的使用模式的影响;它也有不同的机制来键入列值
- MySQL——在甲骨文收购之后,谁想现在就采用它,还是采用fork
- 还有什么别的吗
可扩展性
twisted.enterprise.adbapi
不一定是以可伸缩方式与数据库对话的接口。可伸缩性是一个需要单独解决的问题。twisted.enterprise.adbapi
真正声称要做的唯一一件事就是允许您使用DB-API2.0模块,而不需要通常意味着的阻塞
博士后
对。这是正确的答案。我不认为所有的Python绑定都是废弃的——例如,psycopg2似乎是积极维护的。事实上,他们只是为异步访问添加了一些新绑定,Twisted最终可能会提供一个接口
SQLite3也很酷。您可能希望在应用程序中使用Postgres或SQLite3;例如,即使您想针对Postgres进行部署,您的单元测试在SQLite3上运行肯定会更愉快
其他?
很难知道另一个数据库(可能是非关系数据库)是否比Postgres更适合您的应用程序。这在很大程度上取决于要存储的特定数据以及需要对其运行的查询。如果你的数据库中有有趣的关系,Postgres似乎是一个很好的答案。但是,如果您的所有查询看起来像“SELECT foo,bar FROM baz”,那么可能会有一个更简单、更高性能的选项。有
txpostgres
库,它是twisted.enterprise.dbapi的替代品,而不是线程池和阻塞DB IO,它是完全异步的,利用psycopg2
的内置异步功能
我们正在一家大公司的生产中使用它,到目前为止,它为我们提供了很好的服务。而且,它正在积极开发中——我们最近报告的一个bug很快就被解决了
与mysql或postgres相比,使用基于nosql的数据库进行扩展可能更容易。这是一个足够大的主题,值得提出15或20个专门的问题,而不是在评论中用几句话。;)“但是,如果您的所有查询看起来都像“SELECT foo,bar FROM baz”,那么可能会有一个更简单、更高性能的选项”-->写这篇文章时您想到了什么?:)也许是一些不相关的东西。保持元组的无序列表是许多系统都可以做到的事情,而不一定是显示RDBMs优势的事情。Oracle dbs呢?