sterix24
sterix24

Reputation: 2400

Is this a good approach for building an image library in .NET?

I've been given a project which involves building a photo library for our company intranet and I'm not sure how best to approach this. I'd be very keen to hear your opinions about how I should tackle this. I also apologise up front if my question is inappropriate for these boards since I realise it may be subjective but I don't know where else to put it?

THE PROBLEM:

To start off, we'll be looking to host in the region of several hundred thousand images of various sizes and it has to be a web-based solution. I'll also be developing in .Net / MS Sql Server. Ideally I'd like to incorporate this into Umbraco CMS since most of our administrators are familiar with this interface. The data doesn't necessarily have to be stored within the CMS - it merely needs to be editable and allow users to add/delete items from within it.

My biggest concern here is performance. We don't want users waiting minutes for results. Ideally we want them returned in a matter of seconds.

Basically I want to emulate something like alamy/istockphoto. I want each image to have an associated title, job number, project name, category, tags etc with a thumbnail and then of course a link to the raw, full image.

Just to clarify, some of these images are very large (1gb+ TIFFs). We also already have all the files on a separate file server. The role of this photo library should merely be to map the records in the database with the physical files, not to change the structure of the existing file system or anything like that.

MY PROPOSED SOLUTION:

I'm thinking the first task should be to create a database which will store all the default properties such as id, job number, alias, image file path etc. I'll then create separate tags/categories tables with a many-to-many relationship.

Once I've created the tables, I'll write some custom controls for the CMS that allow an admin to log in and add/edit/remove records from the database.

I'm then thinking of implementing Lucene.net to search through my records. From what I can gather it seems like a good API for getting fast results.

Is this a decent solution? I've never really dealt with many projects of this scale so I'm a bit confused about my options. If someone could just set me off in the right direction I'd greatly appreciate it. I'd also like to keep the solution as simple as possible.

Many thanks!

Upvotes: 0

Views: 124

Answers (1)

Simon
Simon

Reputation: 6152

I would say you're on the right lines.

  • Do not be tempted to try and store the images in the DB. Allow the file server to handle dealing with the physical files.
  • Generate some small jpg/png thumbnails for the images. That way there will be no slow down when querying and searching. I would go for two variants - one to show in search results and a better quality one for drilling into.
  • Consider how you are going to deliver Gb sized images to your users.
  • Consider adding metadata to the images themselves. That way the data is with the actual images too.
  • I can't comment on Lucene .Net as I've not used it but I would say that SQL server should be more than capable of searching and serving up the image data using native Full Text Search functionality. I'd certainly start with that and see how you go.

Upvotes: 1

Related Questions