Python Twisted数据库

2024-06-16 11:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

Twisted应用程序有一个API,可以以可伸缩的方式与数据库对话:twisted.enterprise.dbapi

令人困惑的是,该选择哪个数据库?

该数据库将有一个Twisted应用程序,主要是进行插入和更新,选择相对较少,然后其他严格的只读客户端是访问数据库直接作出选择。

(只读用户不一定选择Twisted应用程序正在插入的数据;它不像数据库被用作消息队列一样)

我想纠正/建议的理解是:

  • Postgres是一个很棒的数据库,但是几乎所有的Python绑定(其中有一个令人困惑的迷宫)都是废弃的
  • postgres有psycopg2,但是这会对自己的连接池和其他事情造成很大的干扰;这种连接池是否与Twisted async数据库连接池等优雅/有用/透明地共存?
  • SQLLite是一个很好的小数据库,但是如果以多用户的方式使用它,它会锁定整个数据库,所以性能会影响我所设想的使用模式;它还有不同的机制来输入列值?
  • MySQL——甲骨文收购后,谁愿意现在采用它,谁愿意采用叉子?
  • 外面还有什么吗?

Tags: 数据用户api数据库应用程序消息客户端队列
3条回答

可扩展性

twisted.enterprise.adbapi不一定是以可伸缩的方式与数据库对话的接口。可伸缩性是一个需要单独解决的问题。twisted.enterprise.adbapi真正声明要做的唯一事情是让您使用DB-API 2.0模块,而不使用通常暗示的阻塞。

博士后

是的。这是正确的答案。我不认为所有的Python绑定都是废弃的,例如psycopg2似乎是主动维护的。实际上,他们只是为异步访问添加了一些新的绑定,Twisted最终可能会提供一个接口。

SQLite3也很酷。您可能希望能够在应用程序中使用Postgres或SQLite3;例如,即使您希望针对Postgres进行部署,您的单元测试在针对SQLite3运行时肯定会更愉快。

其他?

很难知道另一个数据库是否比Postgres更适合您的应用程序。这在很大程度上取决于要存储的特定数据以及需要对其运行的查询。如果你的数据库中有有趣的关系,Postgres看起来确实是一个很好的答案。如果所有的查询看起来像“SELECT foo,bar FROM baz”,那么可能有一个更简单、更高性能的选项。

您可以查看nosql数据库,如mongodb或couchdb with twisted。 使用基于nosql的数据库比使用mysql或postgres更容易扩展。

这里有一个txpostgres库,它是twisted.enterprise.dbapi的替换项,而不是线程池和阻塞DB IO,它是完全异步的,利用了psycopg2的内置异步功能。

我们在一家大公司的生产中使用它,到目前为止它为我们提供了很好的服务。而且,它是积极开发的——我们最近报告的一个bug很快就被解决了。

相关问题 更多 >