我正在寻找帮助决定使用哪个数据库系统。 (过去几个小时我一直在谷歌搜索和阅读;现在似乎值得向第一手知识的人寻求帮助。)
我需要每8小时工作日将大约2亿行(或更多)记录到数据库,然后对该数据执行每周/每月/每年的摘要查询。摘要查询将用于收集诸如账单报表之类的数据,例如。 “本月每个用户运行的A类交易数量是多少?” (可能更复杂,但这是一般的想法)。
我可以根据需要在多台计算机之间传播数据库,但我认为我不能脱机使用旧数据。我肯定需要能够查询一个月的数据,也许一年。这些查询将由我自己使用,并且不需要为最终用户实时生成(如果需要,它们可以在一夜之间运行)。
有没有人对哪个数据库很合适有任何建议?
P.S。 Cassandra看起来处理写入没有问题,但是每月巨大的表扫描呢?有人熟悉Cassandra / Hadoop MapReduce的性能吗?
答案 0 :(得分:2)
我正在开发一个非常类似的流程(一个网络域抓取数据库),具有相同的重要交易率。
在这些摄取率下,首先确保存储层正确至关重要。您将要查看连接到SAN群集中存储的多台计算机。单个数据库服务器每天可以支持数百万次写入,它是每次“写入”使用的CPU量以及写入的速度。
(网络性能通常也是一个早期的瓶颈)
通过巧妙的分区,您可以减少汇总数据所需的工作量。您没有说明摘要需要的最新情况,这一点至关重要。我会尝试从“实时”推回并建议一夜之间(或者如果你可以每月逃脱它)汇总计算。
最后,我们使用2 CPU 4GB RAM Windows 2003虚拟SQL Server 2005和单CPU 1GB RAM IIS Web服务器作为我们的测试系统,我们可以在10小时内摄取2000万条记录(并且存储是RAID共享SAN上的5)。我们得到的摄取率高达每秒160条记录,每个网络往返40个记录。
答案 1 :(得分:1)
Cassandra + Hadoop听起来非常适合你。 200M / 8h是7000 / s,单个Cassandra节点可以轻松处理,听起来你的聚合内容很容易用map / reduce(或更高级别的Pig)。
答案 2 :(得分:1)
Greenplum或Teradata将是一个不错的选择。这些数据库是MPP,可以处理peta规模的数据。 Greenplum是一个分布式PostgreSQL数据库,也有自己的mapreduce。虽然Hadoop可以解决您的存储问题,但对您的数据执行摘要查询没有帮助。