Хранение MEDIA файловов для 1С и сайта
Задача написать сайт для магазина. Есть база данных 1С. В будущем планируется написать сайт. Но прежде всего нужно организовать выгрузку фоток как в 1С так и в будущем на сайт. Файлы могут весить как 3мб, так и 16, 30, 65мб Есть несколько типов товаров (обои, краска, ламинат, паркетная доска). И нужно организовать нормальный вывод иерархии для обычных рядовых пользователей, которые ведут наполнение этой БД. Есть несколько идей: 1) База данных, но как я понял, там есть ограничения по размеру файла. 2) FTP сервер, хост амазона или яндекса. создать там небольшой интерфейс и загружать фотки туда. Но тут тоже до конца не понимаю алгоритм создания такой системы хранения 3) Развернуть на компе FTP, запихнуть в него пару жестких дисков и организовать рейд-массив между ними, но в этом случае я не совсем понимаю как будет происходить выгрузку на 1С или на сайт.
Подскажите как лучше сделать? Тип хранения и иерархию) Спасибо всем)
Ответы (1 шт):
Самый простой и скорее всего даже оптимальный путь - просто храните файлы в виде файлов :) Хранение в БД действительно ограничено для бинарных данных. Да и не нужно, на самом деле.
Не до конца понятно, где и как вы будете хостить сайт - на том же сервере или на другом. Поэтому для начала просто сохраняйте фотки файлами локально на диске, таким образом вы упростите открытие их в приложении 1С. В базе же сохраняйте путь до файла. Соответственно иерархию можно делать через обычный каталоги/папки, называя их по категории или по пользователю. Ну вот как будто вы вручную раскидываете фотки по папках у себя на компе - какие-то в папку "Носки", какие то в папку "Штаны" и так далее. Как вы будете организовывать это файловое хранилище - в raid несколько дисков обьедините или подключите сетевое хранилище, зависит от финансов и обьемов. Принципиально мало отличается.
Естественно, так как вы потом планируете создавать сайт, то крайне желательно папки и названия файлов делать латинскими буквами без спецсимволов, пробелов и т.п. (конечно потом это можно решить, но если сразу можно сделать, то лучше сразу).
А дальше, для сайта возможны варианты. Все зависит от того, как вы будете создавать сайт, как обмениваться данными из 1С на сайт и обратно и так далее. Вариантов может быть действительно много.
Если сайт будет хостится на том же сервере, где и 1С, то нужно чтобы каталоги с файликами были доступны для отображения на сайте через HTTP-протокол, настройте ваш веб сервер, чтобы он отображал по определенной маске локацию (например /images) с эти папок.
Если сайт вообще отдельно хостится - тоже варианты возможны. Например, можно написать скрипт обмена данными (а его придется писать кмк в любом случае), который выгружает подборку данных в виде текстового файла (обычно, что там используют, CSV может или XML) и рядом складывает нужные файлы фоток. Соответственно скопировать эти данные потом на сервер с сайтом, можно через FTP/SFTP или другим способом, запускаете скрипт загрузки и он уже обработает данные, раскидает заодно и файлы в нужной для сайта структуре. Или настройте синхронизацию файлов и данных через какой-то rsync-протокол (утилита rclone например очень классно в этом поможет).
Этот вариант может быть не очень удобным из-за того, что придется хранить и там и там одинаковые файлы. Тогда можно попробовать организовать сетевое хранилище, отдельный сервер или сервис. Чтобы например для сервера с 1С он подключался как сетевой ресурс (SAMBA, NFS) - для 1С это будет выглядеть просто как папка или отдельный диск. А для сайта эти же файлы будут доступны по каким то ссылкам через HTTP. Наверное в этом вам поможет любое решение CDN. ИЛи просто отдельный сервер поставить, где настроить нужные сервисы.
Ну наверное как то так, есть и другие варианты, эти основные, какие я увидел