这是在.NET中构建图像库的好方法吗?

时间:2012-03-27 14:49:31

标签: .net sql-server lucene

我已经获得了一个项目,涉及为我们公司的内部网建立一个照片库,我不知道如何最好地解决这个问题。我非常希望听到你对我应该如何解决这个问题的意见。如果我的问题不适合这些董事会,我也会事先道歉,因为我觉得它可能是主观的,但我不知道还能把它放在哪里呢?

问题:

首先,我们将寻求在数十万种不同大小的图像中进行托管,它必须是基于网络的解决方案。我也将在.Net / MS Sql Server中开发。 理想情况我想将此合并到Umbraco CMS中,因为我们的大多数管理员都熟悉此界面。数据不一定必须存储在CMS中 - 它只需要是可编辑的,并允许用户在其中添加/删除项目。

我最关心的是表现。我们不希望用户等待分钟以获得结果。理想情况下,我们希望它们能在几秒钟内返回。

基本上我想模仿像alamy / istockphoto这样的东西。我希望每个图像都有一个关联的标题,工作号,项目名称,类别,标签等,并带有缩略图,当然还有一个指向原始完整图像的链接。

只是为了澄清,其中一些图像非常大(1gb + TIFF)。我们还已将所有文件放在单独的文件服务器上。这个照片库的作用应该只是将数据库中的记录与物理文件一起映射,而不是改变现有文件系统的结构或类似的东西。

我建议的解决方案:

我认为第一个任务应该是创建一个数据库,它将存储所有默认属性,如id,作业号,别名,图像文件路径等。然后,我将创建单独的标签/类别表多对多的关系。

一旦我创建了表格,我就会为CMS编写一些自定义控件,允许管理员登录并添加/编辑/删除数据库中的记录。

我正在考虑实施Lucene.net来搜索我的记录。从我可以收集到的内容来看,它似乎是获得快速结果的良好API。

这是一个不错的解决方案吗?我从来没有真正处理过这种规模的很多项目,所以我对我的选择感到有些困惑。如果有人能让我朝着正确的方向前进,我会非常感激。我还想让解决方案尽可能简单。

非常感谢!

1 个答案:

答案 0 :(得分:1)

我会说你的路线正确。

  • 不要试图将图像存储在数据库中。允许文件服务器处理物理文件。
  • 为图像生成一些小的jpg / png缩略图。这样在查询和搜索时就不会减速。我会选择两个变体 - 一个在搜索结果中显示,另一个在钻进中更好。
  • 考虑如何向用户提供Gb大小的图片。
  • 考虑向图像本身添加元数据。这样,数据也与实际图像一致。
  • 我不能评论Lucene .Net,因为我没有使用它,但我会说SQL服务器应该能够使用本机Full Text Search功能搜索和提供图像数据。我一定会从那开始,看看你怎么走。