以极高的速率插入记录的最佳数据库是什么。
数据库只有一个表,应用程序非常简单。在DB中插入一行并提交它,但插入率会非常高。
每秒定位约5000行插入。
任何像Oracle \ SQLServer这样非常昂贵的数据库都不可用。
采用数据库备份的技术是什么?是否可以从较旧的备份数据库创建一个数据库?
我无法使用任何数据库的InMemory功能,因为我无法承受应用程序的崩溃。我收到它后,我需要提交行。
答案 0 :(得分:2)
如果您的主要目标是在一段时间内插入大量数据,那么您可能只需要文件系统。
为什么不将数据写入文件中,可选择以DB友好格式(csv,xml,...)?这样你可以实现10倍的性能目标,而不会有太多麻烦。现在大多数操作系统都足够强大,可以防止数据丢失。
编辑:如下所述,jounaling文件系统的设计非常简单,以便在软件(甚至是raid-arrays的硬件)失败的情况下数据不会丢失。 ZFS享有良好的声誉。
答案 1 :(得分:1)
Postgres提供WAL(Write Ahead Log),它基本上插入RAM,直到缓冲区已满或系统有时间呼吸。您将大型WAL缓存与UPS结合使用(为了安全起见),您可以获得非常高效的插入性能。
答案 2 :(得分:0)
要获得高吞吐量,您需要批量插入大型事务。我真的怀疑你能找到任何允许你从客户端每秒往返5000次的数据库。
Sqlite可以处理tons of inserts(每秒25K),前提是东西不是太多线程,而且这些东西都是批处理的。
另外,如果结构正确,我看不出为什么mysql或postgres不支持每秒5000行(假设行不太胖)。对于拥有大量交易,MySQL和Postgres都要宽容得多。
答案 3 :(得分:0)
如果你不能做SQLite,如果我是你,我会看看Firebird SQL。
答案 4 :(得分:0)
即使在“传统”关系型DBMS上,您想要的性能也难以实现。如果查看unclustered TPC-C的结果(TPC-C是事务处理的事实上的标准基准),许多系统可以在非集群系统中提供10倍的需求。如果你想要便宜又坚实,你可能想看看DB2 Express-C。它仅限于两个内核和两千兆字节的内存,但应该足以满足您的需求。