【问题标题】:NoSql With My Own Custom Binary Files?NoSql 有我自己的自定义二进制文件?
【发布时间】:2011-04-06 01:26:25
【问题描述】:

最初,我只需要处理 1.5[TB] 的数据。由于我只需要快速写入/读取(无需任何 SQL),因此我设计了自己的平面二进制文件格式(使用 python 实现)并轻松(愉快地)保存我的数据并在一台机器上对其进行操作。当然,出于备份目的,我添加了 2 台机器用作精确镜像(使用 rsync)。

目前,我的需求不断增长,因此需要构建一个能够成功扩展到 20[TB](甚至更多)数据的解决方案。 我很乐意继续使用我的平面文件格式进行存储。它快速、可靠,可以满足我的一切需求。

我关心的是复制、数据一致性等(显然,数据必须在网络上进行分发——all data 不能存储在one machine 上)。

是否有任何ready-made 解决方案 (Linux / python based) 可以让我继续使用我的文件格式进行存储,但可以处理NoSql 解决方案通常提供的其他组件? (数据一致性/可用性/易于复制)?

基本上,我只想确保我的二进制文件在整个网络中保持一致。我正在使用一个由 60 台双核机器组成的网络(每台机器都有 1GB RAM1.5TB disk

【问题讨论】:

    标签: python linux distributed


    【解决方案1】:

    方法:使用 The Disco Project 在 Python 中减少分布式地图

    似乎是解决问题的好方法。我用the disco project 也遇到过类似的问题。

    您可以将文件分布在 n 台机器(进程)之间,并实现符合您逻辑的 map 和 reduce 函数。

    The tutorial of the disco project,准确描述了如何为您的问题实施解决方案。只需编写如此少的代码,而且绝对可以保持二进制文件的格式,您会印象深刻。

    另一个类似的选项是使用Amazon's Elastic MapReduce

    【讨论】:

    • 谢谢,这看起来很有趣;您对cassandraMangoDB 等其他解决方案有经验吗?请问您使用Disco处理的数据集大小是多少?
    • 您是否也将disco 用于数据存储,还是仅用于运行作业?如果是,它的数据存储能力有多好?
    • 我用它来运行超过 450GB 数据的作业。但在运行作业之前,数据已预先分配到节点。假设我的数据非常静态。没有更新,插入......事务。
    【解决方案2】:

    也许一些关于为 Tarsnap 开发的 Kivaloo 系统的评论会帮助您决定什么是最合适的:http://www.daemonology.net/blog/2011-03-28-kivaloo-data-store.html

    如果不了解您的应用程序(记录的大小/类型、读取/写入频率)或自定义格式的更多信息,就很难说更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      相关资源
      最近更新 更多