what  Robert suggest, is something exactly what the big-big photos
gallery out there used
to store their image. Distributing the image into many servers. But i
am not very sure, how
they store the image location information inside the database.

But i like the idea of using imageUId to determine where to store the image.
I think, storing image in a bucket with 100 images each can make the image more
manageable..

thanks for that idea..

On 7/11/08, Robert Cummings <[EMAIL PROTECTED]> wrote:
> On Thu, 2008-07-10 at 15:46 +0800, paragasu wrote:
>> i am planning to create a web photo gallery. i know there is a lot
>> available out there,
>> but i really want to create my own. the problem is not about creating
>> the photo gallery.
>> i want it to be scalable.
>>
>> the plan is saving the image metadata in the database and keep the
>> original files
>> in a folder. while it work perfectly, i afraid how many files 1
>> directory can keep.
>> in 1 year, there going to be more than 1000 photo uploaded or more.
>> sure it bring problem
>> to maintain thus files.
>>
>> when i see big2 website out there like friendster, photobucket. the
>> url for the image change
>> like
>> pic-1.domain.com/images/filename.jpg
>> pic-2.domain.com/images/filename.jpg
>> etc. they seems to put the image in different subdomain. Just wan't to
>> ask anyone who
>> did create a big-big web gallery like this. How did you do it?
>
> Those guys are probably having their images hit over a million times a
> day. They also likely have millions of images. They are using multiple
> servers to load balance the image serving. Whether this also is used to
> distribute the images themselves is another question.
>
> In Linux a single directory can easily handle hundreds of thousands of
> files. If you expect there to be million in short time, you can always
> bucket the images. Bucketing involves generating some kind of ID that
> can be used to generate bucket directories. For instance if you decide
> you want 1000 buckets, you can an unique integer ID for images in the
> database and modulo the uid by 1000 to determine the bucket directory.
> This means if you have 100,000 images then there would be 1000
> directories and 100 images in each. As you grow to 1 million images you
> would approach 1000 images in 1000 directories. Server offloading can
> work similarly. And you can combine approaches. For instance if you have
> 10 servers to dedicate to images then you can do the following:
>
>     $serverId = $imageUid % 10;
>     $bucketId = $imageUid % 1000;
>
>     $url = "http://image{$serverId}.myDomain.com";
>           ."/{$bucketId}/{$imageFile}";
>
> So for the first 20 images you would have:
>
>    http://image1.myDomain.com/1/aaaaaa.jpg
>    http://image2.myDomain.com/2/aaaaab.jpg
>    http://image3.myDomain.com/3/aaaaac.jpg
>    http://image4.myDomain.com/4/aaaaad.jpg
>    http://image5.myDomain.com/5/aaaaae.jpg
>    http://image6.myDomain.com/6/aaaaaf.jpg
>    http://image7.myDomain.com/7/aaaaag.jpg
>    http://image8.myDomain.com/8/aaaaah.jpg
>    http://image9.myDomain.com/9/aaaaai.jpg
>    http://image10.myDomain.com/10/aaaaaj.jpg
>    http://image1.myDomain.com/11/aaaaak.jpg
>    http://image2.myDomain.com/12/aaaaal.jpg
>    http://image3.myDomain.com/13/aaaaam.jpg
>    http://image4.myDomain.com/14/aaaaan.jpg
>    http://image5.myDomain.com/15/aaaaao.jpg
>    http://image6.myDomain.com/16/aaaaap.jpg
>    http://image7.myDomain.com/17/aaaaaq.jpg
>    http://image8.myDomain.com/18/aaaaar.jpg
>    http://image9.myDomain.com/19/aaaaas.jpg
>    http://image10.myDomain.com/20/aaaaat.jpg
>
> Of course, if you have multiple servers, you need some mechanism on the
> backend to migrate uploaded images to the appropriate server.
>
> Hope that helps.
>
> Cheers,
> Rob.
> --
> http://www.interjinn.com
> Application and Templating Framework for PHP
>
>

Reply via email to