2010-04-26 34 views
16

有一個API,用於雙絞線應用跟一個數據庫,一個可擴展的方式:twisted.enterprise.dbapi數據庫爲Python扭

的令人困惑的事情是,挑哪個數據庫?

該數據庫將有一個扭曲的應用程序,主要是進行插入和更新以及相對較少的選擇,然後等嚴格-只讀直接訪問數據庫進行選擇客戶。

(只讀用戶不必選擇數據,所述扭曲的應用程式插入;其不是因爲雖然數據庫被用作一個消息隊列)

我的理解 - 其中I」 D類似於修正/勸 - 是:

  • Postgres的是一個偉大的數據庫,但幾乎所有的Python綁定 - 而且是其中的一個令人困惑的迷宮 - 是放棄的
  • psycopg2爲postgres,但這使得很多關於做自己的連接池和事情的噪音;這是否與Twisted異步數據庫連接池合併/有用/透明地共存?等等。
  • SQLLite是小事大數據庫,但如果在一個多用戶的方式使用它全數據庫鎖定,所以性能會在我設想的使用模式吮吸;它也有不同的機制來輸入列值?
  • 的MySQL - 甲骨文收購,誰願意要立即採納或採用後叉?
  • 那裏還有其他東西嗎?
+0

Oracle dbs呢? – 2018-01-21 14:33:16

回答

14

可擴展性

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」,那麼可能會有一個更簡單,更高性能的選項。

+0

關於分別解決可伸縮性的指針? – Will 2010-04-26 12:59:37

+2

這是一個足夠大的話題,它應該有15或20個專用問題,而不是評論中的幾個句子。 ;) – 2010-04-27 02:21:34

+0

「如果你所有的查詢看起來都像」SELECT foo,bar FROM baz「,那麼可能會有一個更簡單,更高性能的選項」 - >你在寫這篇文章時想到了什麼? :) – 2011-06-11 11:21:01

9

存在txpostgres庫,它代替了twisted.enterprise.dbapi,代替線程池並阻止數據庫IO,它完全異步,利用psycopg2的內置異步功能。

我們在一家大公司的生產中使用它,迄今爲止它一直在爲我們服務。此外,它正在積極開發 - 我們最近報告的錯誤很快得到解決。

0

你可以看看喜歡的MongoDB或CouchDB的與扭曲的NoSQL數據庫。 使用基於nosql的數據庫比使用mysql或postgres更容易擴展。