【问题标题】:Database for large data files and streaming用于大数据文件和流式传输的数据库
【发布时间】:2018-07-15 10:52:24
【问题描述】:

我有一个“数据库选择”和架构问题。

用例

  1. 客户将上传大型 .json 文件(或其他格式,如 .tsv,这无关紧要),其中每一行都是有关其客户的数据(例如姓名、地址等)
  2. 我们需要稍后流式传输此数据以对其进行处理并存储结果,这些结果也将是一些大文件,其中每一行都是关于每个客户的数据(大约与上传的文件)。

我的要求

  1. 流式传输应该尽可能快(例如 > 1000 rps),并且我们可以让多个进程并行运行(针对多个客户端)
  2. 数据库应该是可扩展的和容错的。因为可以轻松上传许多 GB 的数据,所以如果存储空间不足,我应该很容易实现自动添加新的商品实例(使用 AWS)。

  3. 数据库应该有某种复制,因为我们不想丢失数据。

  4. 不需要索引,因为我们只是流式传输数据。

对于这个问题,您对数据库有什么建议?我们尝试将其上传到 Amazon S3 并让他们负责扩展等,但存在读取/流式传输缓慢的问题。

谢谢, 伊万

【问题讨论】:

  • 您需要的是数据存储而不是数据库。即使是简单的 HDFS 也应该适合您的用例。您是在云端还是本地集群中寻找解决方案?

标签: database mongodb hadoop bigdata


【解决方案1】:

最初将文件上传到 S3 很好,但随后将它们拾取并将每一行推送到 Kinesis(或 MSK 甚至 EC2 上的 Kafka,如果您愿意);从那里,您可以连接您选择的流处理框架(Flink、Spark Streaming、Samza、Kafka Streams、Kinesis KCL)来进行转换和丰富,最后您需要将结果通过管道传输到一个存储堆栈中允许流式附加。一些明显的候选人:

  • HBase
  • 德鲁伊
  • Cassandra 的键空间
  • S3 之上的 Hudi(或者 LakeFS?)

您选择哪一个取决于您在查询灵活性、延迟、集成选项/标准等方面的下游需求。

【讨论】:

    猜你喜欢
    • 2015-12-02
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多