以極高的速度插入記錄的最佳數據庫是什麼?插入記錄的最佳數據庫
數據庫將只有一個表,應用程序非常簡單。在數據庫中插入一行並提交它,但插入率會非常高。
以每秒大約5000行插入爲目標。
任何非常昂貴的數據庫(如Oracle \ SQLServer)都無法選擇。
此外,採取數據庫備份的技術有哪些,可以從較早備份的數據庫創建一個數據庫?
我無法使用任何數據庫的InMemory功能,因爲我承受不了應用程序的崩潰。我需要立即提交該行,只要我收到它。
以極高的速度插入記錄的最佳數據庫是什麼?插入記錄的最佳數據庫
數據庫將只有一個表,應用程序非常簡單。在數據庫中插入一行並提交它,但插入率會非常高。
以每秒大約5000行插入爲目標。
任何非常昂貴的數據庫(如Oracle \ SQLServer)都無法選擇。
此外,採取數據庫備份的技術有哪些,可以從較早備份的數據庫創建一個數據庫?
我無法使用任何數據庫的InMemory功能,因爲我承受不了應用程序的崩潰。我需要立即提交該行,只要我收到它。
如果您的主要目標是在短時間內插入大量數據,可能文件系統是您所需要的。
爲什麼不將數據寫入文件,可選地以DB友好的格式(csv,xml,...)?這樣你可以達到10倍的性能目標,而不會有太多麻煩。現在大多數操作系統足夠強大,可以防止應用程序故障時的數據丟失。
編輯:如下所述,jounaling文件系統的設計非常好,以便在軟件(甚至是RAID)陣列的情況下數據不會丟失。 ZFS擁有良好的聲譽。
要獲得高吞吐量,您需要批量插入大事務。我真的懷疑你可以找到任何分貝,允許你從你的客戶一秒鐘往返5000次。
Sqlite可以處理tons of inserts(每秒25K)提供的東西不是太多線程和東西是批處理。
另外,如果結構正確,我看不出爲什麼mysql或postgres不支持每秒5000行(假設行不是太胖)。 MySQL和Postgres都更容易擁有大量的交易。
Postgres提供WAL(寫入日誌),它本質上是插入到RAM中,直到緩衝區已滿或系統有時間喘息。您可以將大型WAL緩存與UPS結合使用(爲了安全起見),並且您擁有非常高效的插入性能。
如果你不能做SQLite,如果我是你,我會看看Firebird SQL。
即使在「傳統」關係型數據庫管理系統上,您所需要的性能實際上也不難實現。如果您查看unclustered TPC-C的結果(TPC-C是交易處理事實上的標準基準),則許多系統可以在非集羣系統中提供10倍的需求。如果你要便宜和堅實,你可能想看看DB2 Express-C。它僅限於兩個內核和兩個千兆字節的內存,但這應該足以滿足您的需求。
我建議你把它分成2個問題 – 2009-06-18 11:00:01