2011-12-25 103 views
0

我開發PHP中,將需要存儲少量數據,但頻繁的更新小應用幾個數據的高效的存儲。基本上它會毫不猶豫地收集有關我們虛擬化基礎架構的信息,有時它會創建一個概述。我不確定要使用哪種存儲模型/技術。頻繁更新的PHP

收集器線程將檢查CCA 20臺主機與100個虛擬機,需要在一些地方保存它作爲經常需要(甚至每5秒)。這將是一個PHP-cli應用程序。有時會出現在需要彙總所有這些信息和生產主機,虛擬機等的列表網頁的請求......

我已經考慮這些選項:

  • PHP會議

+使用起來非常簡單(我剛點會話一個共享文件)

+原子操作

- 會話鎖定(PHP將管理會議上尋找,但如果劇本需要寫入會議將阻止所有其他人)

  • 自己實現「會」的 - 在文件中存儲數據

+我能處理鎖定問題我自己,可能分裂成數據文件,更

- 有可能只有一點點的好處工作/測試的地塊

  • MySQL的/ SQLite的/ PostgreSQL的

+強大的解決

- 我可能會遇到的問題,鎖定或我需要做行鎖定等..

- 不知道如果數據庫不會佔用大量的磁盤空間由於頻繁的更新

+1

使用@Radak什麼樣的數據庫。如果是MySQL,你可以使用[內存存儲](http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html) – Pradeep

+0

基本上是由我來決定的。我可以有MySQL,PostgreSQL或SQLite(我可以使用其他的東西,但是我需要自己維護它)。我會研究那個存儲器並讓你知道。 –

+0

這看起來很有希望。絕對值得嘗試。如果你想要,你可以將它發佈爲回覆,以便我可以將其標記爲答案。 –

回答

0

您可以嘗試使用MySQL memory storage engine這些表。 。

優點:

  1. 作爲數據存儲在內存中,因此它會快得多
  2. 這樣,您就可以直接使用的數據庫的許多功能(如通過,其中,選擇數據,排序),你會必須實施您的數據庫更換。

缺點:

  1. 你不能有BLOB或TEXT列。 (但如果數據很小,你可以將其轉換爲VARCHAR)
  2. 的所有數據都將丟失MYSQL服務器重新啓動時,所以你必須事先轉儲該表的數據。