Storing massive EXIF and IPTC attributes in database
我正在编写一个需要处理超过15.000张照片的应用程序,我想将它们的EXIF和IPTC属性存储到数据库中。
我最初的方法是使用MySQL并创建一个表来存储所有属性,如此处所示。
但是,大多数照片最多有250个属性。 因为我有15k的照片,这意味着我将有近400万行。 这只是一个开始(我希望将来有更多的照片)。
我想知道在这种情况下MySQL是否可以,或者我应该转向像MongoDB这样的NoSQL方法。
另请注意,我需要使数据库可搜索。
提前致谢。
-
在某些情况下,400万行并不大。 您尚未指定硬件规格或延迟要求(隔夜批次与即时满足)。 你有没有考虑过你是否真的需要每个属性? 您是否有数据库机器来构建测试数据库并进行性能测试?
-
恐怕我还没有机器规格。 是的,我想要所有的属性。 我不是数据库专家,但对于一个简单的应用程序来说,在我看来有4百万行很多数据 - 它不是吗?
-
如果您需要所有数据,请不要。
如果您是.Net开发人员,RavenDB非常适合您的场景。 它可以在非常适中的硬件上轻松处理该卷,并且具有由Lucene搜索引擎内部使用提供的出色搜索功能。
照片本身将作为附件存储,而属性将作为文档的一部分。
即使您不是.Net开发人员,也可以使用任何语言的http / rest来使用RavenDB。 使用原生.Net客户端会更容易。
-
您是否推荐RavenDB,因为它是面向文档的数据库?是什么排除了普通SQL数据库的使用?
-
1)体积 - 乌鸦可以在没有昂贵硬件的情况下扩展到这个尺寸。 2)搜索 - 对任何属性进行稳健的全文搜索,包括部分字符串匹配,建议的搜索结果,非常类似谷歌的搜索功能.3)OP期望定期更多照片。在写入期间更新索引时SQL块读取。 Raven在后台编制索引,优化快速读取。 4)我有偏见。 Mongo或Couch也可以。我喜欢Raven。 :)
-
其实我是Rails开发人员。你认为Mongo会像Raven一样工作吗?
-
MongoDB和CouchDB都会处理规模,但它们没有内置的全文搜索。我知道有些附加组件可以提供该功能。就个人而言,我认为Raven远远优于其中任何一种,但Mongo是一款非常成熟的产品,可能满足您的需求。也许MongoDB的人可以在这里讨论您的具体细节。 - 如果你愿意,你仍然可以使用Raven,但Rails没有本机客户端。您必须使用REST API。