Так что с файлами в базе в 2018, хранить или нет?
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Так что с файлами в базе в 2018, хранить или нет?
Вот мы храним(SQL 2008) но появляются кое-какие проблемы. Размер базы есс-но растет, тяжелее с бэкапами.
Производительность системы вроде как не проблема, все работает хорошо, но может и есть проблема а мы не знаем (ну типа если бы файлы были на диске то меньше ресурсов все жрало бы)
В нашем случае файлы это фотки и документы. Размером до пару метров. Но много.
Вот это актуально или сегодня все в базе хранится?
https://web.archive.org/web/20150216014 ... ystem.html
В нашем случае все хостится в Амазоне, я думаю сделать следующее:
1. Убрать файлы в S3, красиво их там по каталогу раскидать
2. Дать клиентам доступ R/О к каталогу. Таким образом они смогут все файлы смотреть не только из аппликухи
3. Смогу там-же создавать "архив" т.к. у нас есть палици на хранение файлов.
Т.е. реально просто на уровне подсознания напрягает размер баз и "невидимость/недоступность" файлов когда они в базе. Стоит заморочиться и вынести в FS?
Производительность системы вроде как не проблема, все работает хорошо, но может и есть проблема а мы не знаем (ну типа если бы файлы были на диске то меньше ресурсов все жрало бы)
В нашем случае файлы это фотки и документы. Размером до пару метров. Но много.
Вот это актуально или сегодня все в базе хранится?
https://web.archive.org/web/20150216014 ... ystem.html
В нашем случае все хостится в Амазоне, я думаю сделать следующее:
1. Убрать файлы в S3, красиво их там по каталогу раскидать
2. Дать клиентам доступ R/О к каталогу. Таким образом они смогут все файлы смотреть не только из аппликухи
3. Смогу там-же создавать "архив" т.к. у нас есть палици на хранение файлов.
Т.е. реально просто на уровне подсознания напрягает размер баз и "невидимость/недоступность" файлов когда они в базе. Стоит заморочиться и вынести в FS?
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
Главный плюс S3 - это существенное удешевление хранения и доступа по сравнению с сервером и тем более хранением в db, хоть бы и на том же AWS. Другой офигенный плюс - это децентрализованность S3. Или, другими словами, "облачность".katit wrote: ↑11 Sep 2018 23:58 В нашем случае все хостится в Амазоне, я думаю сделать следующее:
1. Убрать файлы в S3, красиво их там по каталогу раскидать
2. Дать клиентам доступ R/О к каталогу. Таким образом они смогут все файлы смотреть не только из аппликухи
3. Смогу там-же создавать "архив" т.к. у нас есть палици на хранение файлов.
Т.е. реально просто на уровне подсознания напрягает размер баз и "невидимость/недоступность" файлов когда они в базе. Стоит заморочиться и вынести в FS?
Еще один плюсик, который я у себя еще не имплементировал, но собираюсь - можно напустить Lambda на этот S3 и автоматизировать, скажем, создание thumbnails.
По поводу №2 - любой открытый доступ к AWS S3, даже R/O, чреват последствиями. Если один клиент, скажем, выложил где-то в открытом доступе линк на принадлежащий им внутренний документ, который вдруг прочтёт другой кастомер - вот и готовый litigation. Чтобы избежать этого, средствами S3 API весьма просто формируется pre-signed link с ограничением по времени.
№3 - для архивации можно даже в glacier заливать. Ну или удалять файлы. Удаление по времени, помнится, в S3 конфигурируется в 2-3 клика.
В обычной FS гораздо меньше преимуществ перед хранением документов в DB, если вообще какие-то есть.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Так что с файлами в базе в 2018, хранить или нет?
Пока не материально, но просто неудобно становится ворочать большие базы.
Ну да. Тоже проблема. Но и не хочется на самом деле углубляться в их API хотя бы чтобы небыло vendor lock. Т.е. если и будем использовать то как FS, разве что сделаем "прослойку" чтобы потом если что легко уйти.По поводу №2 - любой открытый доступ к AWS S3, даже R/O, чреват последствиями. Если один клиент, скажем, выложил где-то в открытом доступе линк на принадлежащий им внутренний документ, который вдруг прочтёт другой кастомер - вот и готовый litigation. Чтобы избежать этого, средствами S3 API весьма просто формируется pre-signed link с ограничением по времени.
Мне недавно родственник рассказывал ужасы как он в глациер загрузил свои архивы. И сколько это стоило и как потом было геморно(дорого) их просто удалить№3 - для архивации можно даже в glacier заливать. Ну или удалять файлы. Удаление по времени, помнится, в S3 конфигурируется в 2-3 клика.
Мне надо держать файлы только определенное время. Но я планирую пока это немного стOит держать все что есть. Но сказать клиентам (уже сказано) что мы держим вот за такое-то время. Все остальное идите и качайте. Можем удалить когда нам захочется. Думал делать бэкапы в зип помесячно и давать доступ на скачку. А потом их удалять через какое-то время
Но я именно и рассматриваю FS как альтернативу. Просто легче увидеть файл если надо, меньше базы..В обычной FS гораздо меньше преимуществ перед хранением документов в DB, если вообще какие-то есть.
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
У меня есть сайт с ~60GB/day траффиком, который практически нереально весь держать на MSSQL на EC2, можно разориться. Поэтому база в Win+SQL на t2-small EC2, а аттачменты на S3. Цена вопроса в месяц - $35-45 за всё.
Логично.katit wrote:Ну да. Тоже проблема. Но и не хочется на самом деле углубляться в их API хотя бы чтобы небыло vendor lock. Т.е. если и будем использовать то как FS, разве что сделаем "прослойку" чтобы потом если что легко уйти.По поводу №2 - любой открытый доступ к AWS S3, даже R/O, чреват последствиями..
Я у себя имплементировал оба варианта хранения файлов, а затем добавил переменную в web.config. Сейчас она установлена на S3. Кроме того, в каждой записи в SQL таблице FILES добавил флаг isaws=true/false. Надоест, или найду хороший colocation дил - переключу обратно в local FS, и сайт постепенно сам переползёт на локалку.
На самом деле, S3 API call там тривиальный. В 10 строк кода:
https://docs.aws.amazon.com/AmazonS3/la ... etSDK.html
Про Glacier не знаю, никогда не использовал. Хотя и он эволюционирует неплохо. Сейчас они обещают восстановление из Glacier в течение 5ти минут.Мне недавно родственник рассказывал ужасы как он в глациер загрузил свои архивы. И сколько это стоило и как потом было геморно(дорого) их просто удалить
Мне надо держать файлы только определенное время. Но я планирую пока это немного стOит держать все что есть. Но сказать клиентам (уже сказано) что мы держим вот за такое-то время. Все остальное идите и качайте. Можем удалить когда нам захочется. Думал делать бэкапы в зип помесячно и давать доступ на скачку. А потом их удалять через какое-то время
Мне вполне достаточно того, что S3 размазан в пространстве. Для супернадежного бекапа достаточно включить репликацию в другую availability zone (читай: другой датацентр в том же регионе). Ну и на десерт можно вообще на другой регион на другое побережье реплицировать. Все операции с S3 весьма cost-efficient.
EC2 instance я периодически копирую в AMI.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
Да.
Но тогда уж договаривайте про репликацию вёдер во CloudFront. Ещё дешевле будет.
Если S3, к примеру, $1/mo, то CloudFront будет центов 5-10 за тот же траффик. Да и контент будет выдаваться с бешеной скоростью с оптимизацией по регионам.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Так что с файлами в базе в 2018, хранить или нет?
У нас уже сильно больше, но это за ресурсы а не за хранение. Причем MSSQL стоит на моей лицензии, сервер просто Win
В нашем случае AWS это брэнд, думаю на цоло никогда не перейдем, хотя уже было бы дешевле. Но клиентам нравится слово "Амазон"Надоест, или найду хороший colocation дил - переключу обратно в local FS,
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Так что с файлами в базе в 2018, хранить или нет?
О, похоже что у Амазона есть продукт как раз как надо. CloudFront позволит клиентам качать архивы
https://stackoverflow.com/questions/309 ... entication
Хотя мне больше вот это нравится:
https://docs.aws.amazon.com/cli/latest/ ... esign.html
Ну да, не супер как секьюрно, но наверное ОК? Показать народу список файлов. Они тыкают, создаю линк на 5 минут к примеру. Они тыкают и скачивают.
Никаких вроде проблем нет с таким подходом? Теоретически если все через SSL то никакие хакеры линк не перехватят а за 5 минут не подберут.
https://stackoverflow.com/questions/309 ... entication
Хотя мне больше вот это нравится:
https://docs.aws.amazon.com/cli/latest/ ... esign.html
Ну да, не супер как секьюрно, но наверное ОК? Показать народу список файлов. Они тыкают, создаю линк на 5 минут к примеру. Они тыкают и скачивают.
Никаких вроде проблем нет с таким подходом? Теоретически если все через SSL то никакие хакеры линк не перехватят а за 5 минут не подберут.
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
Именно так. См ПМ.katit wrote: ↑18 Sep 2018 23:32 Хотя мне больше вот это нравится:
https://docs.aws.amazon.com/cli/latest/ ... esign.html
Ну да, не супер как секьюрно, но наверное ОК? Показать народу список файлов. Они тыкают, создаю линк на 5 минут к примеру. Они тыкают и скачивают.
Никаких вроде проблем нет с таким подходом? Теоретически если все через SSL то никакие хакеры линк не перехватят а за 5 минут не подберут.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Так что с файлами в базе в 2018, хранить или нет?
Файлы таки убрал из базы, все вроде работает. Плохо только то что всеравно они достаются через моы веб сервер когда клиенту надо. Потом подумаю как сделать может через их REST API чтобы клиент с S3 напрямую скачивал, по идее нагрузка на мой сервер упадет здорово.
Вопрос по MS SQL на амазоновском RDS. Стоит или нет? У меня лицензия есть и я сервер поставил и сам им занимаюсь. Как этот RDS работает? Они просто дают IP и там можно создавать сколько угодно баз? Есть ли смысл?
Вопрос по MS SQL на амазоновском RDS. Стоит или нет? У меня лицензия есть и я сервер поставил и сам им занимаюсь. Как этот RDS работает? Они просто дают IP и там можно создавать сколько угодно баз? Есть ли смысл?
Лучше водки — хуже нет! ©
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
Дык вроде же ты и при чтении генеришь signed URL, а дальше редирект юзера на S3, откуда они уже и сливают файл. Или я ошибаюсь ?
Я тут недостатков особо не вижу. Наоборот, плюс такой архитектуры не только в разграничении доступа к файлу, но и статистика, и geolocation (у меня).
Я сам сейчас в процессе переезда на RDS, но в другом проекте. Мне кажется, в RDS таки есть ограничения по доступу к базе, и вот эти детали я сейчас выясняю. К концу недели, скорее всего, буду уже полностью в курсе.katit wrote: Вопрос по MS SQL на амазоновском RDS. Стоит или нет? У меня лицензия есть и я сервер поставил и сам им занимаюсь. Как этот RDS работает? Они просто дают IP и там можно создавать сколько угодно баз? Есть ли смысл?
Вкратце, делается бекап базы в BAK файл, заливается в bucket, потом из RDS восстанавливается в базу. RDS даёт тебе типа connection string, и в бой. Цена вопроса начинается от $30/mo.
Смысл в том, что они сами бекапят и вообще поддерживают базу в рабочем состоянии, индексы ребилдят, итп. Опять же, не надо грузить свой EC2 инстанс лишними процессами.
У себя на EC2 можно продолжать юзать SQL Mgmt Studio или любой другой клиентский пакет, из которого можно работать с базой в RDS как локальной.
По самым свежим слухам (я был 13го на Atlanta AWS summit) у них Aurora мощно продвинулась в производительности. Теперь она чуть ли не на 2 порядка быстрее самого шустрого MySQL кластера. Я этот вопрос тоже внимательно изучаю.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 7723
- Joined: 29 Mar 2000 10:01
- Location: Kirkland,WA
Re: Так что с файлами в базе в 2018, хранить или нет?
Скорее всего вы говорите про aurora parallel query (pushdown of scans, filters, etc to storage nodes). Это очень круто но это не для всех - пожалуйста не ожидайте что вообще все внезапно стало в 100 раз быстрее. С радостью разберусь если что то не так работает.
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Так что с файлами в базе в 2018, хранить или нет?
Чувак вроде вещал про write transactions. См фото. Но я могу ошибаться в деталях.
(Синие графики - MySQL, оранжевые - Aurora)
You do not have the required permissions to view the files attached to this post.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Так что с файлами в базе в 2018, хранить или нет?
Нет, пока у меня написана прослойка которая в зависимости от конфига пишет и читает файлы либо из базы либо из S3 или FS
Файлы сами мелкие, документы в основном. Доступ частый, как-то стремно генерить signed URL. Я планировал задействовать signed URL для месячных архивов, те побольше.
Проблема в том что мы до сих пор на Silverlight, а я из него не могу REST использовать. Как только переползем сразу сделаю чтобы сами файлы через мой сервер не шли.
Я уже выяснил. Лимит - 30 баз. У нас уже больше. Таким образом их РДС-ов не напасешься. Сейчас у нас больше нагрузка на веб сервер чем на базу.. Все бекапы и т.д. уже и так настроены. Ладно, с этим пока расслаблюсь. Мне там понравилось только replication into multiple zones. Но можно и самому настроить. По деньгам нифига не дешево..Я сам сейчас в процессе переезда на RDS, но в другом проекте. Мне кажется, в RDS таки есть ограничения по доступу к базе, и вот эти детали я сейчас выясняю. К концу недели, скорее всего, буду уже полностью в курсе.
Лучше водки — хуже нет! ©