2009-06-18 102 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。它仅限于两个内核和两个千兆字节的内存,但这应该足以满足您的需求。

相关问题