3

我有大量数据需要存储,并且能够生成报告——每个数据都代表网站上的一个事件(我们说每秒超过 50 个,因此显然需要汇总旧数据)。

我正在评估实现这一点的方法,显然它需要可靠,并且应该尽可能容易扩展。还应该可以以灵活有效的方式从数据中生成报告。

我希望一些 SOer 有此类软件的经验并可以提出建议,和/或指出其中的缺陷。

理想情况下,我想在 EC2 上部署它。

4

4 回答 4

4

哇。你正在打开一个巨大的话题。

有几件事就在我的脑海中...

  1. 仔细考虑您在事务部分中插入和在报告部分中读取的模式,如果您的数据量非常大,最好将它们分开
  2. 仔细查看您在交易实时报告和历史数据汇总报告之间可以容忍的延迟。也许您应该有一个定期运行并汇总您的交易的流程。
  3. 仔细查看任何要求您报告交易和汇总数据的任何要求,无论是在同一个报告中还是作为从一个到另一个的向下钻取
  4. 具有一些有意义的查询和一些实际数据量的原型
  5. 让自己拥有真正的生产质量、企业级数据库,即 Oracle / MSSQL
  6. 考虑使用其他人的代码/产品进行报告,例如Crystal/BO / Cognos

正如我所说,巨大的话题。当我想到更多时,我将继续添加到我的列表中。

HTH 祝你好运

于 2008-10-31T22:44:27.023 回答
1

@Simon提出了很多优秀的观点,我将添加一些并重新迭代/强调其他一些:

  1. 为时间戳使用正确的数据类型 - 确保 DBMS 具有适当的精度。
  2. 考虑排队以捕获事件,允许多个线程/进程处理事件的实际存储。
  3. 分离事务和数据仓库的模式
  4. 认真考虑从事务数据库到数据仓库的定期 ETL。
  5. 请记住,您可能不会有 50 个事务/秒 24x7x365 - 峰值事务与平均事务
  6. 调查DBMS 中的分区表。Oracle 和 MSSQL 都将根据一个值(如日期/时间)进行分区。
  7. 从一开始就制定归档/数据保留政策。太多的项目只是开始记录数据而没有计划删除/归档它。
于 2008-11-01T01:37:43.040 回答
1

我很惊讶这里的答案都没有涵盖 Hadoop 和 HDFS - 我建议这是因为 SO 是程序员 qa,而您的问题实际上是一个数据科学问题。

如果您正在处理大量查询和大量处理时间,您将使用 HDFS(EC 上的一种分布式存储格式)来存储您的数据并在商品硬件上运行批量查询(即分析)。

然后,您将根据需要预置尽可能多的 EC2 实例(数百或数千个,具体取决于您的数据处理要求有多大)并针对您的数据运行 map reduce queires 以生成报告。

于 2013-01-13T14:12:23.087 回答
0

哇..这是一个很大的话题。

让我从数据库开始。如果您要拥有大量数据,请首先获得一些好的东西。我喜欢甲骨文和 Teradata。

其次,记录交易数据和报告/分析之间存在明确的区别。将您的交易数据放在一个区域中,然后定期将其汇总到报告区域(模式)中。

我相信你可以通过这两种方式来处理

  • 花钱解决问题:购买一流的软件(数据库、报告软件)并聘请一些精明的技术人员提供帮助

  • 采用本土方法:只构建你现在需要的东西,并有机地发展整个东西。从一个简单的数据库开始,构建一个 Web 报告框架。有很多血统开源工具和廉价机构可以完成这项工作。

就 EC2 方法而言。我不确定这将如何适应数据存储策略。处理是有限的,这是 EC2 强大的地方。您的主要目标是有效的存储和检索。

于 2009-02-11T14:20:44.583 回答