Size: a a a

pgsql – PostgreSQL

2021 March 23

MS

Maxim Sherstuk in pgsql – PostgreSQL
И ещё вопрос к сообществу - как лучше хранить документы в базе? Или как организовать хранение на файловом сервере, если в базе лучше не хранить. Какие best practices в этом вопросе? У нас с коллегами не утихает спор - я топлю за oid т е LOB, они за bytea. Примерно 8к файлов общим размером 40гб, всякие документы и архивы, бывают по 12мб, работа с ними не частая, но бывает нужно поднять доки. Плюс хотим антивирусом проверять. Есть ли опыт файлового хранения в базе?
источник

D

Dmitriy in pgsql – PostgreSQL
Maxim Sherstuk
И ещё вопрос к сообществу - как лучше хранить документы в базе? Или как организовать хранение на файловом сервере, если в базе лучше не хранить. Какие best practices в этом вопросе? У нас с коллегами не утихает спор - я топлю за oid т е LOB, они за bytea. Примерно 8к файлов общим размером 40гб, всякие документы и архивы, бывают по 12мб, работа с ними не частая, но бывает нужно поднять доки. Плюс хотим антивирусом проверять. Есть ли опыт файлового хранения в базе?
В S3 или Minio. В базе - ключи
источник

кн

коля николай... in pgsql – PostgreSQL
коля николай
Вопросик. wal_writer начинает сбрасывать данные между 2 lsn на диск. Что происходит, если он приходит на страницу и обнаружевает, что lsn страницы не соответствует (т.е страница была обновлена в процессе сэйвпоинта)
или я ошибся и валрайтер саму страницу на диск не скидывает?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
коля николай
или я ошибся и валрайтер саму страницу на диск не скидывает?
да, он не пишет страницы и не лезет в них, если мы о страницах с данными (т.к. WAL-данные тоже страницами пишутся).
т.е. ситуация “он приходит на страницу” — невозможна.

также вопрос что значит “страница была обновлена в процессе сэйвпоинта” — на репликах любые изменения происходят только в рамках репликации, соответственно состояние в памяти наиболее актуальное. если база вдруг упадёт — запустится и опять будет восстанавливать данные из уже локальных WAL-ов.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim Sherstuk
И ещё вопрос к сообществу - как лучше хранить документы в базе? Или как организовать хранение на файловом сервере, если в базе лучше не хранить. Какие best practices в этом вопросе? У нас с коллегами не утихает спор - я топлю за oid т е LOB, они за bytea. Примерно 8к файлов общим размером 40гб, всякие документы и архивы, бывают по 12мб, работа с ними не частая, но бывает нужно поднять доки. Плюс хотим антивирусом проверять. Есть ли опыт файлового хранения в базе?
источник

кн

коля николай... in pgsql – PostgreSQL
Victor Yegorov
да, он не пишет страницы и не лезет в них, если мы о страницах с данными (т.к. WAL-данные тоже страницами пишутся).
т.е. ситуация “он приходит на страницу” — невозможна.

также вопрос что значит “страница была обновлена в процессе сэйвпоинта” — на репликах любые изменения происходят только в рамках репликации, соответственно состояние в памяти наиболее актуальное. если база вдруг упадёт — запустится и опять будет восстанавливать данные из уже локальных WAL-ов.
Спасибо
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Maxim Sherstuk
И ещё вопрос к сообществу - как лучше хранить документы в базе? Или как организовать хранение на файловом сервере, если в базе лучше не хранить. Какие best practices в этом вопросе? У нас с коллегами не утихает спор - я топлю за oid т е LOB, они за bytea. Примерно 8к файлов общим размером 40гб, всякие документы и архивы, бывают по 12мб, работа с ними не частая, но бывает нужно поднять доки. Плюс хотим антивирусом проверять. Есть ли опыт файлового хранения в базе?
Если нет файлов больше 1ГБ, то не надо пользоваться LOB. Ибо обслуживание - отдельная песТня про никуда не упёршееся рукоблудство и скриптоложество. Плюс игрища с кроном/системд-таймером
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
ЗЫ. Но вот байта требует памяти, это да.
источник

ДМ

Дмитрий Мачихелян... in pgsql – PostgreSQL
Yaroslav Schekin
А именно?
Он выводит только строки с country_code = ""
источник

SZ

Sergey Zhuravlev in pgsql – PostgreSQL
Maxim Sherstuk
И ещё вопрос к сообществу - как лучше хранить документы в базе? Или как организовать хранение на файловом сервере, если в базе лучше не хранить. Какие best practices в этом вопросе? У нас с коллегами не утихает спор - я топлю за oid т е LOB, они за bytea. Примерно 8к файлов общим размером 40гб, всякие документы и архивы, бывают по 12мб, работа с ними не частая, но бывает нужно поднять доки. Плюс хотим антивирусом проверять. Есть ли опыт файлового хранения в базе?
можно файлы хранить в БД, если вы понимаете зачем вам это нужно )
вот авторитетное мнение Брюса Момжана на эту тему:

https://momjian.us/main/blogs/pgblog/2017.html#November_6_2017

но БД будет пухнуть, ее обслуживание, резервное копирование и др. будет все затруднительней — нужно это учитывать.
Были доклады, где люди рассказывали, как они избавлялись от документов в PG и возвращали их на ФС )
Те это зависит от того, что вам важно
источник

Ð

Ð in pgsql – PostgreSQL
хранить на обычном nginx зашифрованными, а в базе пароли
источник

Ð

Ð in pgsql – PostgreSQL
да куча способов, все зависит от задачи
источник

Ð

Ð in pgsql – PostgreSQL
жирная база - не удобно, wal по таким файлам с их изменениями, а если еще и версии надо хранить - это капец
источник

Ð

Ð in pgsql – PostgreSQL
у меня был такой сервак несколько лет назад, и я его как раз собственноручно переделывал на хранение вне базы, что конечно гораздо удобнее, на базу меньше ио, и тд
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Читал, ещё раз перечитал. Плюсы и минусы понятны, но что лучше всего - не ясно. И как стримить oid не встречал примеров. Я топлю за oid, коллеги за bytea из-за простоты, может согласиться?
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Dmitriy
В S3 или Minio. В базе - ключи
Minio интересно, спасибо
источник

Ð

Ð in pgsql – PostgreSQL
у меня вначале это тоже было на с3, потом из-за конских цен на трафик переехали на три обычных нжинкса на хетзнере, и это оказалось очень дешево и гораздо быстрее .
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Т е обычный nginx и всё?
источник

Ð

Ð in pgsql – PostgreSQL
ну да
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
Да, наверное лучший вариант.. просто не охота настраивать и + нужно как-то резервировать
источник