【问题标题】:How should I best store these files?我应该如何最好地存储这些文件?
【发布时间】:2013-06-27 20:38:15
【问题描述】:
我有一组图像文件,它们通常很小,在 5k 到 100k 之间。它们可以是任何大小,超过 50mb,但这非常罕见。当这些图像被放入系统时,它们永远不会被修改。这些图像总共大约有 50 TB。它们目前在 Oracle 中被分块并存储在 BLOB 中,但我们想要改变这一点,因为它需要特殊的软件来提取它们。
有时在大约 10 台服务器中以每秒超过 100 个请求的速度访问这些图像。
我正在考虑使用 Hadoop 或 Cassandra,但我真的不知道哪个最好或如何最好地为它们编制索引。
【问题讨论】:
标签:
hadoop
nosql
cassandra
hbase
【解决方案1】:
首先,我建议您也看看 HBase。 Imageshack 的人们正在使用 HBase 来存储他们的图像内容,并且他们能够成功地做到这一点。看到这个thread。
回到您最初的问题,您可以将不是很大(~10MB)的图像存储到 Cassandra 中。大文件可以通过 Cassandra(或 HBase)中的指针转储到 HDFS 中。
HTH
【解决方案2】:
如果您要将它们提供给 Internet,我建议您将它们放在 Amazon S3 上。它将为您节省大量操作开销,存储足够便宜,如果需要,您可以在其上放置一个 CDN (CloudFront)。只需为每个图像使用一个随机 ID,将其用作文件名,然后将该文件名保存在您的数据库中(Cassandra 可能是一个不错的选择)。
最终,这取决于您要如何处理这些图像。您应该更新您的问题并更多地解释您的用例。如果你只存储图片,也许你根本不需要数据库,但如果图片每秒被提供到互联网数百次,你就完全需要别的东西了。