【问题标题】:Options for storing binary data of size 100 MB to 1 GB用于存储大小为 100 MB 到 1 GB 的二进制数据的选项
【发布时间】:2020-02-28 08:38:43
【问题描述】:

如果我打算存储大小从 100 MB 到 1 GB 不等的二进制数据,有什么更好的选择 1. 关系数据(我假设这是直接否定的) 2. NoSQL 数据库 3.文件系统

还建议是否有其他更好的方法(就写入和读取数据的性能而言)

数据性质: 这是一个包含 1-50 百万个单元格的表格。细胞之间没有太多的结构关系。他们可以被认为是独立的。 该表永远不会更新。这是一个仅插入表。 上面的信息告诉我(尽管由于缺乏关于 NoSQL DB 的知识而受到限制)柱状 DB 不会有太大帮助。请纠正我。

谢谢

【问题讨论】:

  • 我提供了更多信息。不确定这是否有帮助。请务必告诉我。
  • 数据是如何读取的?即阅读程序需要知道什么才能找到数据?它只是迭代所有吗?是否使用众所周知的密钥访问它?它是否需要找到它,如果需要,它是否根据文件中的信息找到它?一些简单的元数据?一些复杂的元数据,例如标签或附加的 JSON?
  • 数据整体读取。我们不需要部分二进制数据。每个二进制数据都将根据一个键存储,并根据该键完成查找。

标签: database performance blob storage


【解决方案1】:

tl;dr:文件系统。

由于存储的项目之间没有关系,因此关系数据库将浪费所有可能的资源。

对于任何比键值存储更高级的 NoSQL 数据库也是如此,例如Graph Databases。甚至像Cassandra 这样的东西也太过分了。

所以选择通常是在一些键值存储、对象存储之间进行选择,例如Minio,或常规 POSIX 文件系统。

所有 3 个都有适合测试的简单实现和适合生产的复制等复杂实现。

其中,我建议使用文件系统。

文件系统比键值存储更适合,因为数据很大,而且键值存储通常针对数量和延迟进行优化,而不是针对大小和带宽进行优化。

文件系统也比对象存储或键值存储更有用,因为大多数文件系统具有相同的 API (POSIX),这意味着:

  1. 切换到另一个文件系统很容易。有很多很多
  2. 几乎可以对存储在文件系统上的数据执行任何操作的工具。

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2018-01-16
    • 2012-09-12
    • 2019-03-12
    相关资源
    最近更新 更多