2012-01-31 13 views
1

我需要一些快速的方法來更新鍵/值類型數據,或者在Linux上系統範圍內任意數量的「計數器」。有問題的系統是Ubuntu 10.04,RHEL 4.8和RHEL 5.x.系統全局計數器可以以編程方式更新(在各種Linux版本上)?

現在,我知道memcached,但它似乎更適合長時間運行的進程,如FastCGI進程。不幸的是,我的過程是一個傳統的CGI,因此必須在過程本身之外使用一些持久存儲。

我有哪些選擇,哪些是最簡單的,以及最便宜的(從運行時間)從C/C++訪問?

注意:這不是測量速度(即性能計數器),而是測量某種事件發生的次數。爲了可靠地計數,我需要能夠自動地增加計數器的數量......

回答

1

您可以使用簡單的DBM類數據庫,例如GDBM

+0

謝謝。不過,GDBM文檔並沒有提到原子性。那麼這對於併發CGI實例試圖啓動同一個計數器將如何表現呢?關於ACID呢? – 0xC0000022L 2012-01-31 14:44:56

+0

@STATUS_ACCESS_DENIED檢查維基百科文章中的其他數據庫。其中一些具有原子性和/或ACID處理。我認爲大部分DBM系列都比他們啓發的現代「NoSQL」數據庫輕得多。 – 2012-01-31 14:55:39

+0

謝謝,你是對的VSDB看起來很有希望。 – 0xC0000022L 2012-01-31 16:13:02

1

你可以嘗試一個小的SQLite數據庫。 SQLite是快速和可靠的,任何應用程序都可以修改它,並且事務方法可以防止碰撞。只需爲每個事件的表格添加一條記錄,或者在[事件]列中使用單個表格。插入速度非常快,搜索速度慢,但只有在分析數據時纔會搜索,希望在性能成爲因素之後。

+0

謝謝。是的,數據將被完全獨立讀取。可能甚至不在同一臺機器上,所以便攜式格式本身就適用(我甚至理解SQLite的二進制格式在很大程度上可移植,不同版本之間以及不同體系結構之間)。 – 0xC0000022L 2012-01-31 14:48:08

1

如今,爲了

更新鍵/值類型數據

開發者經常使用NoSQL數據庫。他們主要運行在Linux系統上,其中一些使用C++(MongoDB & ClusterPoint)。他們對於這類事情確實很快,他們非常努力地保持低延遲,並且應該很容易從C++訪問它,因爲它們是用C++編碼的。

+0

感謝您的回覆,但是不會有每個產生的實例都必須建立連接的事實是一個大問題嗎?關於ACID呢? – 0xC0000022L 2012-01-31 14:43:19

+0

@STATUS_ACCESS_DENIED我知道更多關於MongoDB的知識,而不是ClusterPoint,但是您可以在命令中針對某個值執行原子增量,您還可以使用連接池來限制必須爲每個請求建立冷連接。我不確定,但認爲Redis可能會更適合這種特殊的用例,雖然...或者有一個簡單的服務,使用持久性存儲到只包含二進制編碼的64位無符號整數的文件。 – Tracker1 2012-06-25 17:33:32

相關問題