将图像传递给Java

时间:2018-05-02 11:32:48

标签: java hdfs database-connection javadb imagesource

我正在开发一个项目,我从传感器中提取图像并将其保存到操作系统目录中。我有一个Java API用于将图像上传到服务器。

我需要上传这些图像,其他一些数据通常会将数据类型浮动到主服务器。

我需要决定一个中间人,例如数据库,我存储这些图像并通过java建立连接以上传或使用HDFS。

有人可以告诉我,哪种选择最适合存储图像?数据库还是HDFS?

注意:将来可能会有更多 15万的图像。

3 个答案:

答案 0 :(得分:0)

完全取决于用例,你可以选择

  1. HDFS:当您想要将它们作为一个整体阅读或转移或处理它们以对图像数据进行任何操作并存储或根据处理结果执行其他操作时。简单来说,如果你想做Map-Reduce操作。并且在HDFS中按顺序读取图像,如果您想要根据某些选择标准执行特定图像的获取,那么这会对成本和性能造成影响。
  2. 数据库:对于基于查询的操作,您最好在某些条件的基础上查询或对图像执行DML操作,简单地说,WHERE条件。但是,当你想要作为一个块进行处理时,这是一个非常耗时的过程。当你要存储150万张图像时,性能显然会非常慢
  3. 所以我的建议基于要求,你想将图像存储为中间,最好存储在HDFS本身。

答案 1 :(得分:0)

今天150,000张图片被认为不是很大。如果假设每个映像(未压缩)的平均值为10 MB,则数据量为1.5 TB,这应该可以存储在现成的数据库中(使用现成的硬件,即带有Linux的盒子)一些RAID磁盘,如postgreSQL。我不是HDFS的专家,即使我尝试与HDFS在同一系列中的产品我发现它们易于使用,我想你可以尝试Hadoop然后处理图像,如果你正在寻找一种方法来并行化处理。即使这个产品系列很好我仍然会使用像postgreSQL这样的标准数据库如果本质上不需要并行化(就像你进入HDFS一样)。

答案 2 :(得分:0)

我认为最好的方法是保留您需要的浮动数据和数据库中图像的元数据。为了更容易搜索和查询以及更容易与Java交互。实际图像最好存储在文件系统中,以减少与数据库之间的转换。我相信一个简单的文件系统对于那么大的图像来说已经足够了。你可能不会使用任何奇特的HDFS函数,比如map reduce和类似的东西。但这取决于你。

因此,在这种情况下,如果标准文件系统对您来说不够好,而您想要更大的东西,那么HDFS就是您的选择。所以正确的方法是两者的混合。