2015-01-04 144 views
0

我试着去设计,可以定期从外部API“下载”大量数据的系统..最佳途径

此用户可以有大约60万条我需要的数据记录,然后每隔一小时左右核对两个数据集。

我想最终在后台任务中使用python或ruby做这件事,但我很好奇如何存储数据。

是否有可能/好主意将所有内容存储在一个记录中散列为json vs单独拷贝每个记录?

这将是很好的能够索引或搜索数据没有任何失败,所以我想知道什么是最好的实现内存明智。

例如,如果用户有500,000条推文记录,并且我想存储所有这些记录,这会是更好的实施方式吗?

一条记录为JSON => user_1 = {id:1 twt:“blah”},{id:2 twt:“blah”},..... {id:600,000 twt:“blah”}

VS

多条记录=>
ID:1 outside_id = 1 TWT: “嗒嗒”

ID:2 outside_id = 1 TWT: “嗒嗒”

ID:3 outside_id = 1 twt:“blah”

我是c无论如何我会发现每种方法的内存密集程度如何,或者什么是最佳解决方案。

记录很复杂,每个记录可能有40个属性,我想存储。

也可以MySQL或MongoDB更快的复制/存储解决方案吗?

回答

0

我认为这一切都归结为该项目最重要的需求。这些是我在选择技术之前尝试回答的一些问题:

  1. 在插入数据库之后,是否需要单独访问记录?
  2. 我读过数据时是否需要汇总数据(例如用于报告)?
  3. 对于项目目标来说更重要的是让数据快速写入还是快速读取
  4. 我预计数据量会增长多少?我选择的数据库技术能够轻松,便宜,可靠地扩展以支持数据量?
  5. 数据的模式会改变吗?我需要像MongoDB这样的无模式数据库解决方案吗?
  6. 开发时间/成本,维护时间/成本和运行该程序的时间/成本之间的权衡在哪里?

不知道有关的细节或您的项目或目标,我会说通常不是一个好主意存储单个JSON对象的整个数据。这可能会使读取数据并在未来追加数据变得更加困难。您应该多想一些关于如何建模数据并在数据库中表示的方式,以便在以后真正需要时使用它。

+0

1.是的,探索性分析可能会涉及收集每条记录的数据。 2.是报告是理想的3.两者实际上......这使我意识到两种模式可能是最佳的......一种设计为快速获取数据,另一种在内存中快速处理4.理想的基础设施可轻松扩展5。模式将被标准化6.我真的只是寻找最快的解决方案来测试 – ChrisWesAllen