2009-06-18 164 views
2

以極高的速度插入記錄的最佳數據庫是什麼?插入記錄的最佳數據庫

數據庫將只有一個表,應用程序非常簡單。在數據庫中插入一行並提交它,但插入率會非常高。

以每秒大約5000行插入爲目標。

任何非常昂貴的數據庫(如Oracle \ SQLServer)都無法選擇。

此外,採取數據庫備份的技術有哪些,可以從較早備份的數據庫創建一個數據庫?

我無法使用任何數據庫的InMemory功能,因爲我承受不了應用程序的崩潰。我需要立即提交該行,只要我收到它。

+0

我建議你把它分成2個問題 – 2009-06-18 11:00:01

回答

2

如果您的主要目標是在短時間內插入大量數據,可能文件系統是您所需要的。

爲什麼不將數據寫入文件,可選地以DB友好的格式(csv,xml,...)?這樣你可以達到10倍的性能目標,而不會有太多麻煩。現在大多數操作系統足夠強大,可以防止應用程序故障時的數據丟失。

編輯:如下所述,jounaling文件系統的設計非常好,以便在軟件(甚至是RAID)陣列的情況下數據不會丟失。 ZFS擁有良好的聲譽。

0

要獲得高吞吐量,您需要批量插入大事務。我真的懷疑你可以找到任何分貝,允許你從你的客戶一秒鐘往返5000次。

Sqlite可以處理tons of inserts(每秒25K)提供的東西不是太多線程和東西是批處理。

另外,如果結構正確,我看不出爲什麼mysql或postgres不支持每秒5000行(假設行不是太胖)。 MySQL和Postgres都更容易擁有大量的交易。

+0

我不能使用SQLite的InMemory的東西 – Geek 2009-06-18 11:02:10

+0

你不必......這些基準是寫入磁盤的數據。 – 2009-06-18 11:06:40

+0

我已經使用SQLite,但SQLite中的信息檢索方式太慢,一旦數據庫擊中1000萬行。你認爲MySQL會更好嗎? – Geek 2009-06-18 11:12:18

1

Postgres提供WAL(寫入日誌),它本質上是插入到RAM中,直到緩衝區已滿或系統有時間喘息。您可以將大型WAL緩存與UPS結合使用(爲了安全起見),並且您擁有非常高效的插入性能。

0

即使在「傳統」關係型數據庫管理系統上,您所需要的性能實際上也不難實現。如果您查看unclustered TPC-C的結果(TPC-C是交易處理事實上的標準基準),則許多系統可以在非集羣系統中提供10倍的需求。如果你要便宜和堅實,你可能想看看DB2 Express-C。它僅限於兩個內核和兩個千兆字節的內存,但這應該足以滿足您的需求。