【发布时间】:2015-02-28 02:30:11
【问题描述】:
我正在构建一个社交网络,其中包含各种功能,其中许多功能由大数据密集型工作负载(例如机器学习)提供支持。例如:推荐系统、搜索引擎和时序序列匹配器。
鉴于我目前有 5 个用户——但预计会有显着增长——我应该使用哪些指标来决定:
- Spark(带/不带 HBase over Hadoop)
- MongoDB 或 Postgres
将 Postgres 视为一种减少它和 Spark 之间移植压力的方法(使用适用于两者的 SQL 抽象层)。 Spark 看起来很有趣,可以想像各种 ML、SQL 和 Graph 问题它都可以快速回答。 MongoDB 是我通常使用的,但我发现它的缩放和 map-reduce 功能非常有限。
【问题讨论】:
-
所有这些技术都可以很好地扩展到 5 个以上的用户:)。最好选择你最了解的。在这个阶段,功能开发比扩展更重要。也就是说,Spark 确实非常适合批处理。
-
@DanielDarabos:我完全不同意。仅仅因为熟悉而选择错误的技术可能会使您在开发的后期阶段花费大量时间。问 Facebook,我知道他们可以告诉你一些故事来证实这一点。此外,作为开发人员,您应该使用正确的工具来完成工作,而不是用螺丝刀敲打钉子。
-
我的印象是这个项目处于原型设计阶段。现在写的东西无论如何都会被扔掉。 在此阶段之后,当您更清楚地了解需求时,您可以做出更好的技术决策。这是我的看法,但我当然没有写 Facebook :)。
-
我希望借此机会学习最适合解决此问题的技术堆栈。 Facebook 的例子就是一个很好的例子。所以要回答我的堆栈问题,我应该怎么做?
标签: mongodb postgresql hadoop apache-spark bigdata