2011-06-05 30 views
2

使用python時,SQLite可用作生產數據庫來管理10,000個數據庫文件(每個文件都在單獨的文件中 - 大小爲500 MB)?生產中的python和SQLite

將只使用一個線程將數據寫入數據庫文件(無併發)。

有替代品庫可以更好/更快/更可靠地工作嗎?

+1

我不認爲任何事情可以處理這種理智。即使在一個數據庫中的10k表格也在「大毛髮的ERP」區域--10K個不同的數據庫聽起來像是一場噩夢。你如何正確地進行模式升級? – Mat 2011-06-05 18:51:28

+0

@Mat:不會有任何模式升級;這些將基本上是單獨的文件,每個文件將分別訪問/處理。沒有連接/沒有模式更改;只是個別文件。 – user3262424 2011-06-05 19:11:16

+0

@Mat,他不是在談論10k表,文件系統中只有10k個不同的SQLite文件,它完全不受SQLite的影響。由於他只是一次處理一個文件,我們基本上在說「SQLite能否以可靠和安全的方式與500MB數據庫一起工作?」這裏 – 2011-06-05 21:12:37

回答

0

如果您一次處理一個SQLite數據庫,那麼您可以處理的數據庫文件數量沒有限制。只需確保在打開下一個數據庫之前正確清理(關閉每個數據庫連接),並且不會看到任何問題。

一次打開一個數據庫使這與僅使用一個數據庫文件沒有區別。 SQLite是一個很好的格式,我還沒有看到任何完整性問題,並且我已經非常廣泛地濫用了這種格式,包括在重新打開數據庫之前將更新後的數據庫進行了rsyncing(覆蓋的數據庫只讀過),或者執行一個完整的清除並從第二個進程重新構建(包裝在一個大的事務中,再次是從它讀取的第一個進程)。你不應該做的一件事就是將它存儲在網絡共享中。

至於尺寸限制,看看http://www.sqlite.org/limits.html; SQLite項目需要嚴格測試並且包含數據庫限制。最大BLOB大小爲2 GB,這意味着他們測試的數據庫至少在他們的測試套件中很大,因此高達500MB的數據庫應該很容易處理。

+0

謝謝。「SQLite」能否輕鬆處理500 [MB]大小的數據庫文件? – user3262424 2011-06-06 01:04:20

+0

請參閱http://www.sqlite.org/limits.html;最大的BLOB大小是2GB,這個限制已經過很好的測試,也是你數據庫大小的4倍。我會說這是一個響亮的「是!」。 – 2011-06-06 07:06:31

+0

太棒了,謝謝! – user3262424 2011-06-06 11:40:40

7

也許你會看看this page標題爲「適當使用SQLite」。引述:

根據經驗,當它是 適當使用SQLite的基本規則是這樣的:使用 的SQLite的情況下管理,實施簡單 和 維護比 無數複雜更重要 企業數據庫引擎提供的功能。 事實證明,簡單是更好的選擇 比許多人意識到的情況更常見。

查看SQLite的另一種方法是: SQLite的目的不是爲了取代 Oracle。它旨在取代 fopen()。

+0

謝謝。這看起來很合適。你知道它是否可以處理10,000個大小爲500 [MB]的數據庫文件?我一次只能處理一個文件,但想獲得不錯的表現。最重要的是,是否有任何誠信問題? (文件被損壞等)? – user3262424 2011-06-05 18:34:32