Re: Need suggestion - Mailing list pgsql-general

From Ognjen Blagojevic
Subject Re: Need suggestion
Date
Msg-id 4DE7AD4B.9050803@gmail.com
Whole thread Raw
In response to Re: Need suggestion  (Carl von Clausewitz <clausewitz45@gmail.com>)
List pgsql-general
Carl,

Please keep in mind I am not a Postgres expert nor consultant, I'm just
sharing my experience. I would also like to hear the opinion of other
people who worked on projects with similar database sizes.

I would keep all files in the single table -- most probably they will be
served to the user by the same code (e.g. file download servlet or
something similar) so it is good if all relevant info is in one table,
something like:

file {
  id
  mime_type
  name
  content bytea
  creation_date datetime
  modification_date datetime
  creation_user
  modification_user
}

Since both image and document inherits file, you may choose any of the
common RDB inheritance modeling strategies (one table per hierarchy, one
table per class...), but since there is just a few fields, I would put
everything in the same table.

Consider cardinality between cases and files/users. Can one file be
related with two cases and so on...

Toast table will be splitted in 1GB pieces.

Create indexes considering ways your users will browse or search data.

Regards,
Ognjen


On 2.6.2011 12:22, Carl von Clausewitz wrote:
> Dear Ognjen,
>
> thank you - that was my idea too, but I've never seen such a workload
> like this. The docu's (which are not processed by any ocr hopefully) and
> the pictures are not indexed off course, just some metadatas, which are
> related to the exact docu, or pic For example:
>
> productions_docu1:
> -sent date
> -recieved date
> -type
> -owner
> -case_id
> -etc
>
> image_001:
> -picturetaken date
> -case_id
> -image_type
>
> Just these metadatas need to be searched. My questions about the
> structure was like this: do you recommend, to store the images and the
> docu's in a same table (CREATE TABLE docu_img_store (id
> BIGSERIAL, case_id BIGINT, content_type INTEGER, content bytea), or
> store it in two different tables? Is there any special settings while
> table creations, that I have to set for optimal work (like index,
> storage parameter, toast, etc).
>
> (:-) I know, that this project could be a high value revenue for any DB
> consultancy related company, but this is a small country, with small
> project fees, and I'm employee, not a contractor at my company :-)
>
> Thanks you in advance,
> Regards,
> Carl
>
>
> 2011/6/2 Ognjen Blagojevic <ognjen.d.blagojevic@gmail.com
> <mailto:ognjen.d.blagojevic@gmail.com>>
>
>     Carl,
>
>     I don't have experience with that big databases, but I did both
>     solutions, and here are pros of both of them:
>
>     1. Files stored on the filesystem:
>     - Small database footprint
>     - Faster backup, export and import
>
>     2. Files stored in the database
>     - RDBMS takes care of transactions and ref. int.
>     - Slower backup, export and import but all done in one step
>     - Easier continuous archiving
>
>     I slightly prefer option no. 2, since transaction handling, rollback
>     and ref. integrity is not so easy to implement when you have two
>     different storage systems (FS and RDB).
>
>     As for indexes and tables it is not clear form your message whether
>     you need just a regular search (field LIKE 'something'), full text
>     search of metadata, or full text search of scanned documents (in
>     case they are OCRed).
>
>     Regards,
>     Ognjen
>
>
>
>     On 1.6.2011 10:08, Carl von Clausewitz wrote:
>
>         Hello Everyone,
>
>         I got a new project, with 100 user in Europe. In this case, I
>         need to
>         handle production and sales processes an its documentations in
>         PostgreSQL with PHP. The load of the sales process is
>         negligible, but
>         every user produces 2 transaction in the production process,
>         with 10-30
>         scanned documents (each are 400kb - 800kb), and 30-50 high
>         resolution
>         pictures (each are 3-8 MB), and they wanted to upload it to
>         'somewhere'.
>         'Somewhere' could be the server files system, and a link in
>         the PostgreSQL database for the location of the files (with some
>         metadata), or it could be the PostgreSQL database.
>
>         My question is that: what is your opinion about to store the scanned
>         documentation and the pictures in the database? This is a huge
>         amount of
>         data (between daily 188MB and 800MB data, average year is about 1 TB
>         data), but is must be searchable, and any document must be retrieved
>         within 1 hour. Every documentations must be stored for up to 5
>         years...
>         It means the database could be about 6-7 TB large after 5 years, and
>         then we can start to archive documents. Any other data size is
>         negligible.
>
>         If you suggest, to store all of the data in PostgreSQL, what is your
>         recommendation about table, index structure, clustering, archiving?
>
>         Thank you in advance!
>         Regards,
>         Carl
>
>
>
>     --
>     Sent via pgsql-general mailing list (pgsql-general@postgresql.org
>     <mailto:pgsql-general@postgresql.org>)
>     To make changes to your subscription:
>     http://www.postgresql.org/mailpref/pgsql-general
>
>


pgsql-general by date:

Previous
From: Vick Khera
Date:
Subject: Re: Access to postgres conversion
Next
From: Ben Chobot
Date:
Subject: Re: Need suggestion