Thread: management of BLOBs

management of BLOBs

From
Dmitry Turin
Date:
Я должен хранить файлы (BLOB-ы) с 3 параметрами
и контролировать доступ пользователей к ним.
Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
(максимальный размер таблицы в pg).
66% файлов имеют размер около 10-20 Kb,
33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
(максимальный размер поля в pg).

Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
но не нажел подходящего инструмента.
Посоветуйте какой-нибудь бесплатный софт.


I must to store files (BLOB) with 3 string parameters
and control access of users to them.
Total size of files, equal to 2.5Gb, is much less, than 32TB
(max size of table in pg).
66% of files have size nearly 10-20 Kb,
33% of files have size hearly 150-200 Kb, that is less, than 1GB
(max size of field in pg).

I have attentively stydied http://pgfoundry.org, http://gborg.postgresql.org,
but i don't find suitable instrument for this.
Prompt my any _free_ soft.


Dmitry Turin
SQL4      (4.3.0)  http://sql40.chat.ru
HTML6     (6.4.1)  http://html60.chat.ru
Unicode2  (2.1.0)  http://unicode2.chat.ru
Computer2 (2.0.3)  http://computer20.chat.ru


Re: management of BLOBs

From
"Zubkovsky, Sergey"
Date:
Не совсем понятно, что конкретно должен уметь делать искомый инструмент?

Однако, в вашей ситуации, меня бы больше интересовал другой, очень популярный вопрос: "А где лучше хранить эти файлы:
именнокак BLOB-ы в БД или же в виде файлов?" 

;-)))


-----Original Message-----
From: pgsql-ru-general-owner@postgresql.org [mailto:pgsql-ru-general-owner@postgresql.org] On Behalf Of Dmitry Turin
Sent: Wednesday, September 26, 2007 10:38 AM
To: pgsql-ru-general@postgresql.org
Subject: [pgsql-ru-general] management of BLOBs

Я должен хранить файлы (BLOB-ы) с 3 параметрами
и контролировать доступ пользователей к ним.
Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
(максимальный размер таблицы в pg).
66% файлов имеют размер около 10-20 Kb,
33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
(максимальный размер поля в pg).

Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
но не нажел подходящего инструмента.
Посоветуйте какой-нибудь бесплатный софт.


I must to store files (BLOB) with 3 string parameters
and control access of users to them.
Total size of files, equal to 2.5Gb, is much less, than 32TB
(max size of table in pg).
66% of files have size nearly 10-20 Kb,
33% of files have size hearly 150-200 Kb, that is less, than 1GB
(max size of field in pg).

I have attentively stydied http://pgfoundry.org, http://gborg.postgresql.org,
but i don't find suitable instrument for this.
Prompt my any _free_ soft.


Dmitry Turin
SQL4      (4.3.0)  http://sql40.chat.ru
HTML6     (6.4.1)  http://html60.chat.ru
Unicode2  (2.1.0)  http://unicode2.chat.ru
Computer2 (2.0.3)  http://computer20.chat.ru


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Re: management of BLOBs

From
Dmitry Turin
Date:
Sergey,

ZS> Не совсем понятно, что конкретно должен уметь делать искомый инструмент?
Пока только предоставлять или не предоставлять доступ к файлам.

ZS> А где лучше хранить эти файлы: именно как BLOB-ы в БД или же в виде файлов?
Наши менеджеры собираются потребовать административную надстройку над этим хранилицем.

ZS> Я должен хранить файлы (BLOB-ы) с 3 параметрами
ZS> и контролировать доступ пользователей к ним.
ZS> Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
ZS> (максимальный размер таблицы в pg).
ZS> 66% файлов имеют размер около 10-20 Kb,
ZS> 33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
ZS> (максимальный размер поля в pg).

ZS> Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
ZS> но не нажел подходящего инструмента.
ZS> Посоветуйте какой-нибудь бесплатный софт.


ZS> I must to store files (BLOB) with 3 string parameters
ZS> and control access of users to them.
ZS> Total size of files, equal to 2.5Gb, is much less, than 32TB
ZS> (max size of table in pg).
ZS> 66% of files have size nearly 10-20 Kb,
ZS> 33% of files have size hearly 150-200 Kb, that is less, than 1GB
ZS> (max size of field in pg).

ZS> I have attentively stydied http://pgfoundry.org, http://gborg.postgresql.org,
ZS> but i don't find suitable instrument for this.
ZS> Prompt my any _free_ soft.


Dmitry Turin
SQL4      (4.3.0)  http://sql40.chat.ru
HTML6     (6.4.1)  http://html60.chat.ru
Unicode2  (2.1.0)  http://unicode2.chat.ru
Computer2 (2.0.3)  http://computer20.chat.ru


Re: management of BLOBs

From
"Andrey N. Oktyabrski"
Date:
Dmitry Turin wrote:
> Я должен хранить файлы (BLOB-ы) с 3 параметрами
> и контролировать доступ пользователей к ним.
> Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
> (максимальный размер таблицы в pg).
> 66% файлов имеют размер около 10-20 Kb,
> 33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
> (максимальный размер поля в pg).
>
> Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
> но не нажел подходящего инструмента.
> Посоветуйте какой-нибудь бесплатный софт.
Я уже выкладывал тут свою поделку для разделения доступа. Если это то,
что надо, пользоваться так:
\i row_acl.sql

-- OBJECT with rights and parameters
CREATE TABLE _blob (
   id            SERIAL,
   usr           TEXT NOT NULL CHECK (usr ~ '^[A-Za-z0-9_]+$'),
   grp           TEXT NOT NULL CHECK (grp ~ '^[A-Za-z0-9_]+$'),
   param         HSTORE NOT NULL DEFAULT '',
   file          BYTEA
);

CREATE VIEW blob AS SELECT * FROM _blob o
   WHERE session_user = 'admin'
      OR o.acl && 'o+r'
      OR o.acl && 'u+r' AND  o.usr = session_user
      OR o.acl && 'g+r' AND (pg_has_role(session_user, o.grp, 'member'));

CREATE RULE blob_ins AS ON INSERT TO blob DO INSTEAD
   INSERT INTO _blob (usr, grp, acl, param, file)
   VALUES (new.usr, new.grp, new.acl, new.param, new.file);

CREATE RULE blob_upd AS ON UPDATE TO blob DO INSTEAD
   UPDATE _blob
   SET id = new.id, usr = new.usr, grp = new.grp, acl = new.acl, param =
new.param, file = new.file
   WHERE id = new.id AND (
         o.acl && 'o+w'
      OR o.acl && 'u+w' AND  o.usr = session_user
      OR o.acl && 'g+w' AND (pg_has_role(session_user, o.grp, 'member'));
   );

CREATE RULE blob_del AS ON DELETE TO blob DO INSTEAD
   DELETE FROM _blob
   WHERE id = old.id AND (
         o.acl && 'o+w'
      OR o.acl && 'u+w' AND  o.usr = session_user
      OR o.acl && 'g+w' AND (pg_has_role(session_user, o.grp, 'member'));
   );

REVOKE select, insert, update, delete ON _blob FROM PUBLIC;
GRANT  select, insert, update, delete ON blob  TO   PUBLIC;

С того времени, как я его здесь выкладывал, там многое изменилось (уже
не мной). Например, селективность индекса теперь считается.

Attachment

Re: management of BLOBs

From
"Andrey N. Oktyabrski"
Date:
Andrey N. Oktyabrski wrote:
> -- OBJECT with rights and parameters
> CREATE TABLE _blob (
>   id            SERIAL,
>   usr           TEXT NOT NULL CHECK (usr ~ '^[A-Za-z0-9_]+$'),
>   grp           TEXT NOT NULL CHECK (grp ~ '^[A-Za-z0-9_]+$'),
>   param         HSTORE NOT NULL DEFAULT '',
>   file          BYTEA
> );
Прошу прощения, самое главное поле не добавил в таблицу...

-- OBJECT with rights and parameters
CREATE TABLE _blob (
   id            SERIAL,
   usr           TEXT NOT NULL CHECK (usr ~ '^[A-Za-z0-9_]+$'),
   grp           TEXT NOT NULL CHECK (grp ~ '^[A-Za-z0-9_]+$'),
+ acl           ROW_ACL NOT NULL DEFAULT 'u+rwd',
   param         HSTORE NOT NULL DEFAULT '',
   file          BYTEA
);

Re: management of BLOBs

From
Dmitry Turin
Date:
Andrey,

>> Я должен хранить файлы (BLOB-ы) с 3 параметрами
>> и контролировать доступ пользователей к ним.
>> Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
>> (максимальный размер таблицы в pg).
>> 66% файлов имеют размер около 10-20 Kb,
>> 33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
>> (максимальный размер поля в pg).
>>
>> Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
>> но не нажел подходящего инструмента.
>> Посоветуйте какой-нибудь бесплатный софт.
ANO> Я уже выкладывал тут свою поделку для разделения доступа. Если это то,
ANO> что надо, пользоваться так:
ANO> \i row_acl.sql
Но это только sql, а не законченный продукт под браузер (+php,etc) или
exe-шник (с исходником, например, под Delphi; etc) !?


Dmitry Turin
SQL4      (4.3.0)  http://sql40.chat.ru
HTML6     (6.4.1)  http://html60.chat.ru
Unicode2  (2.1.0)  http://unicode2.chat.ru
Computer2 (2.0.3)  http://computer20.chat.ru


Re: management of BLOBs

From
Anton
Date:
> ANO> \i row_acl.sql
> Но это только sql, а не законченный продукт под браузер (+php,etc) или
> exe-шник (с исходником, например, под Delphi; etc) !?

Да, и к тому же совершенно непонятно где чорт побери кнопка "сделать
мою работу" ?!

--
engineer

Re: management of BLOBs

From
"uge "
Date:

 Подобное решение есть для MySQL - mysqlfs.

 

Я разработал системы для хранения файлов в БД на PostgreSQL и Firebird.

В обоих случаях в БД хранил только ссылки на файлы, а реальные данные в ФС

на сервере. У PostgreSQL есть огромный плюс: plPerlu.

Для представления данных в виде ФС использую FUSE.

Эта тема регулярно обсуждается на sql.ru

 

Я должен хранить файлы (BLOB-ы) с 3 параметрами
и контролировать доступ пользователей к ним.
Общий объем файлов 2,5 Гб, что меньше, чем 32 Тб
(максимальный размер таблицы в pg).
66% файлов имеют размер около 10-20 Kb,
33% файлов имеют размер около 150-200 Kb, что меньше, чем 1Гб
(максимальный размер поля в pg).

Я внимательно изучил http://pgfoundry.org, http://gborg.postgresql.org,
но не нажел подходящего инструмента.
Посоветуйте какой-нибудь бесплатный софт.

Vacuum

From
ON
Date:
Приветствую!

Вопрос: Есть ли необходимость вручную вакуумить системные таблицы?

Regards,
ON.


Re: management of BLOBs

From
Oleg Deribas
Date:
Hello,

uge said the following on 01.10.2007 7:40:

> Я разработал системы для хранения файлов в БД на PostgreSQL и Firebird.
> В обоих случаях в БД хранил только ссылки на файлы, а реальные данные в ФС
> на сервере.

Для firebird - через UDF ?

--
Oleg