Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 用于每天2亿次写入、每月摘要查询的数据库解决方案_Database_Logging_Nosql_Mapreduce - Fatal编程技术网

Database 用于每天2亿次写入、每月摘要查询的数据库解决方案

Database 用于每天2亿次写入、每月摘要查询的数据库解决方案,database,logging,nosql,mapreduce,Database,Logging,Nosql,Mapreduce,我正在寻求帮助,以决定使用哪个数据库系统。(在过去的几个小时里,我一直在谷歌上搜索和阅读;现在向有第一手知识的人寻求帮助似乎是值得的。) 我需要每8个工作小时将大约2亿行(或更多行)记录到数据库中,然后对该数据执行每周/每月/每年的摘要查询。摘要查询将用于收集诸如账单之类的数据,例如“每个用户本月运行了多少类型为A的事务?”(可能更复杂,但这只是一般想法) 必要时,我可以将数据库分散到多台机器上,但我不认为我可以将旧数据脱机。我肯定需要能够查询一个月的数据,也许一年。这些查询将供我自己使用,不需

我正在寻求帮助,以决定使用哪个数据库系统。(在过去的几个小时里,我一直在谷歌上搜索和阅读;现在向有第一手知识的人寻求帮助似乎是值得的。)

我需要每8个工作小时将大约2亿行(或更多行)记录到数据库中,然后对该数据执行每周/每月/每年的摘要查询。摘要查询将用于收集诸如账单之类的数据,例如“每个用户本月运行了多少类型为A的事务?”(可能更复杂,但这只是一般想法)

必要时,我可以将数据库分散到多台机器上,但我不认为我可以将旧数据脱机。我肯定需要能够查询一个月的数据,也许一年。这些查询将供我自己使用,不需要为最终用户实时生成(如果需要,它们可以在一夜之间运行)

有没有人对哪些数据库比较合适有什么建议


p.S.Cassandra看起来在处理写操作方面不会有问题,但是巨大的每月表格扫描又如何呢?有人熟悉Cassandra/Hadoop MapReduce性能吗?

Cassandra+Hadoop听起来确实很适合您。200M/8h是7000/s,单个Cassandra节点可以轻松处理,而且使用map/reduce(或更高级别的Pig)可以很简单地完成聚合操作。

Greenplum或Teradata将是一个不错的选择。这些数据库是MPP,可以处理peta规模的数据。Greenplum是一个分布式PostgreSQL数据库,也有自己的mapreduce。虽然Hadoop可以解决您的存储问题,但它对您的数据执行摘要查询没有帮助。

我目前正在进行一个非常类似的过程(web域爬网数据库),具有相同的显著事务速率

在这些摄取率下,首先正确设置存储层至关重要。您将看到多台计算机连接到SAN群集中的存储。单数据库服务器每天可以支持数百万次写入,这是每次“写入”所使用的CPU数量和写入的提交速度

(网络性能通常也是早期的瓶颈)

通过巧妙的分区,您可以减少总结数据所需的工作量。你没有说总结需要有多及时,这很关键。我会尝试从“实时”推回,并建议隔夜(或者如果你可以每月进行一次)总结计算


最后,我们将使用一个2 CPU 4GB RAM Windows 2003虚拟SQL Server 2005和一个单CPU 1GB RAM IIS Web服务器作为测试系统,我们可以在10小时内接收2000万条记录(存储在共享SAN上的是RAID 5)。我们的接收速率高达每秒160条记录,在每次网络往返中以40条记录的块进行批处理。

我有点惊讶,您有这么大的问题,而且没有现有的数据库基础架构。到目前为止,你们的系统是如何运作的?是的,老实说,是星期五下午导致我对细节缺乏了解。。。我想在周末调查一下,但下班后的啤酒还在等着;)数据当前被记录到一个PostgreSQL数据库中,一些SQLite数据库(在RAM中)充当写入缓冲区。目前这种方法还可以很好地工作——它可以跟上写操作,每秒查询数百MB(postgres db大约为4TB)。真的,问题在于扩张。很高兴能有一个现实的计划来扩展系统,因为容量正在稳步增长。感谢Harsha,我没有听说过这两个。大约两年后,我们终于建立了第一个Cassandra集群。最初,我们会将if用于其他目的,但如果一切顺利,我们可能会开始将一些更大的Postgres数据库转换为if。感谢乔纳森(以及所有其他贡献者)为卡桑德拉所做的工作。