我正在構建一個應用程序,該應用程序包含一個功能,以交互方式或多或少地批量標記數百萬條記錄。用戶交互與Gmail非常相似,用戶可以在其中標記單個電子郵件或批量標記大量電子郵件。我也需要對這些標籤成員的快速讀取權限,以及讀取模式或多或少是隨機的。用於低延遲讀取和寫入的持久性策略
現在我們使用Mysql併爲每個標記 - 文檔對插入一行。向Mysql寫入數百萬行需要一段時間(高I/O),即使是批量插入和大量優化。我們需要這是一個交互式過程,而不是一個批處理過程。
對於我們正在存儲和讀取的數據,數據的一致性和可用性不如性能和可伸縮性那麼重要。因此,如果系統在寫入過程中發生故障,我可以處理一些數據丟失。但是,在某些時候,數據肯定需要保存到輔助存儲中。
所以,總結一下,這裏有要求:
- 的數以百萬計的記錄可能幾十低延遲批量寫入不需要
- 耐用寫入
- 最終一致性是好的
這裏有一些解決方案,我已經看了:其中的記錄寫入到內存,瀝乾到數據庫異步高速緩存(兵馬俑,GigaSpaces的,連貫性)的後面
- 寫。這些讓我感到害怕,因爲它們似乎給我想要避免的應用程序增加了一定的複雜性。
- 高度可擴展的鍵值存儲,如MongoDB的,HBase的,東京暴君