Задать вопрос
Ответы пользователя по тегу Хранение данных
  • Как ограничить доступ к S3 без проксирования?

    2ord
    @2ord
    Нужно дать всем пользователям возможность загружать файлы в S3, но просматривать только файлы внутри своего клиента.
    Клиенты, использующие Jira, не заходят в свои бакеты. За них это делает бэк.
    Не так ли?
    Что значит "просматривать"? Пути к файлам должны быть определены на бэке и пусть клиент смотрит через веб-интерфейс на свои файлы. Допустим, файлы отчетов лежат в s3://reports-bucket/reports/customer-12345/. Бэк ведь знает где отчеты находятся?! Вот он их и показывает! Список имен файлов отчетов должен храниться в СУБД. Бэк просто составляет полный путь в "ведре" и если надо дать ссылку на скачивание, то просто создается presigned URL. Ссылка показывается в веб-интерфейсе и нет никаких нарушений прав доступа.
    А можно ли текущему пользователю показывать создавать ссылку на отчет или нет - зависит от авторизации пользователя на сайте.
    Ответ написан
    Комментировать
  • Какой носитель выбрать для долгосрочного хранения данных в случае ЧС?

    2ord
    @2ord
    Есть менее очевидные варианты, такие как облачные хостинги. Можно хранить в S3 бакете, можно в Dropbox.
    Ответ написан
    Комментировать
  • Как реализовать хранение изображений отдельно от кода и запрос нужного размера на лету?

    2ord
    @2ord
    Если нужны готовые решения, то:
    https://github.com/Pixboost/transformimgs
    https://github.com/thumbor/thumbor
    Cloudinary
    Ответ написан
    Комментировать
  • Какой формат хранения сборника норм внутри приложения использовать?

    2ord
    @2ord
    Первое, что в голову пришло - перелить это все в несколько разных JSON-файлов по разделам.
    Работать с набором JSON файлов не практично. Стоит работать с СУБД.
    Воообще, с начала стоит упорядочить все справочники, поработав над нормализацией данных. Нужно избавляться от неструктурированных данных, насколько это возможно.

    Следом пришла мысль завести базу на SQLite со всеми нормами, и уже ее разворачивать при запуске приложения.
    А это уже хороший выбор. Советую начать с неё.
    Для поддержки JSON: https://sqlite.org/json1.html

    Какой наилучший вариант для хранения справочника и быстрого парсинга оного для подгрузки в приложение?
    Все справочники подгружать сразу при инициализации программы не нужно. Некоторые особо критичные данные можно подгрузить в начале, но только если они не занимают сотню МБ в памяти.

    MongoDB точно не нужно выбирать на начальном этапе. Если на каком-то этапе будут чувствоваться ограничения SQLite, то стоит обратить внимание на Postgres.
    Ответ написан
    4 комментария
  • Какие можно использовать технологии/форматы для хранения бинарных пользовательских данных в десктопном приложении?

    2ord
    @2ord
    Хочется хранить весь профиль пользователя (то, что обычно называют Vaults или Spaces в похожих приложениях) включая бинарные файлы (библиотеки изображений, мультимедиа, документов и т.п. файлов) в едином файле с быстрым доступом, вместо иерархии папок на файловой системе.

    Хранить в архивах ZIP, TAR/PAX, конечно, можно, но не сильно удобно: вместо работы с файлами придётся работать с библиотеками для работы с архивами: то записать в архив, то прочесть с него. С точки зрения производительности вряд ли будет столь же эффективно, как с файловой системой (даже с иерархией папок).

    Можно просто держать пользовательские настройки и файлы - отдельно. И ничего особо мудрить тогда не нужно и будет очень универсально. Хотя, с точки зрения кросс-платформенности, скорее всего, будет не так всё хорошо. Но если пользоваться библиотеками поддерживающими кросс-платформенность - так лучше, конечно.

    В настольных приложениях общие настройки и данные хранят в /etc , /usr/share , /usr/lib (Linux) , пользовательские - согласно спецификациям XDG и в Windows - в своих директориях.

    Медиа-файлы, конечно, должны быть доступны приложению простым образом, без необходимости писать/читать в/из архив(а). Особенно, если необходимо запустить ассоциированное с типом файла внешнее приложение, как видео-проигрыватель.

    Более гибкий вариант: использовать SQLite или какую-то K/V СУБД (тот же Redis!). В добавок к кросс-платформенности получаем возможность простым API работать с данными, не занимаясь мелочью типа открыть-закрыть файл, (де)сериализовать данные (настройки всякие), записать/прочесть блок данных. Ими занимается драйвер СУБД (обычно библиотека) и сама СУБД.

    Дополнительный гибридный вариант - использовать файлы локально и удалённо (с SDK): допустим с каким-нибудь объектным хранилищем, по протоколу S3 или другому. Как вариант, даже, использовать драйвер VFS для прозрачной работы с неким хранилищем, которое с точки зрения настольного приложения будет работать, как обычная ФС.

    Для примеров можно взять типичные приложения типа веб-браузера или какого-нибудь мессенджера и посмотреть какие технологии используются в них.
    Ответ написан
    Комментировать
  • Чем открыть .Jet?

    2ord
    @2ord
    Нужно сначала узнать что за формат файла. Есть утилита TrID для Windows/Linux.
    Зная что за формат, куда проще узнать какое ПО работает с ним.
    Пример
    C:\TrID>trid c:\test\doc\lasik_info.doc

    TrID/32 - File Identifier v2.24 - (C) 2003-16 By M.Pontello

    Collecting data from file: c:\test\doc\lasik_info.doc
    Definitions found: 5702
    Analyzing...

    70.7% (.DOC) Microsoft Word document (58000/1/5)
    29.3% (.) Generic OLE2 / Multistream Compound File (24000/1)
    Ответ написан
    Комментировать
  • Какая программа для резервного копирования хранит версии копий файлов?

    2ord
    @2ord
    Они наверняка есть. Такой механизм называется "Append-only Log" - это когда данные дополняются, но не замещаются.
    Ответ написан
  • Какой самый правильный, на ваш взгляд, способ хранить динамические настройки?

    2ord
    @2ord
    Sphinx search MVA (multi-valued attributes) / Elasticsearch, либо как указал Василий Банников
    Ответ написан
    Комментировать
  • Как правильно организовать хранение большого кол-ва видео и картинок?

    2ord
    @2ord
    Запустить службу типа MinIO (протокол S3) с разными bucket-ами на экземплярах, подключенных к SSD либо HDD и тогда можно управлять логикой закачки-загрузки из приложения.
    Ответ написан
  • БД или JSON? Что где использовать?

    2ord
    @2ord
    около 500 строк и 15 столбцов
    с файлами заморочки будут.

    На данном этапе наиболее целесообразно использовать SQLite (всего 1 файл), если, конечно, речь не о размещении бота на Heroku. Но, главное - доступ к данным через стандартный SQL.
    Ответ написан
    1 комментарий
  • Как выгоднее организовать хранение данных (фото/видео/др. файлы) для обмена в узком кругу лиц (для чата)?

    2ord
    @2ord
    Для хранения файлов запустить MinIO (протокол S3) на своих мощностях или выбрать любого провайдера S3.
    Обращаться к S3 по API из приложения при помощи библиотек.
    Ответ написан
    Комментировать
  • Как эффективно копаться в терабайтах файлов?

    2ord
    @2ord
    Есть различное ПО для индексации текстовой и другой информации на базе полно-текстовых движков.
    Для настольного варианта есть DocFetcher (с отдельной pro версией). Кажется, есть и серверный вариант.
    Если хочется готовить самостоятельно, тогда можно взять Apache Solr, Apache Tika.
    Ответ написан
    Комментировать
  • Где гранить файлы для бота Telegram?

    2ord
    @2ord
    Файлы курсов, можно залить на какой-нибудь хостинг файлов. Если серьезное применение, то нередко используется хранилище S3. Это как FTP, только лучше. Но небесплатно. И тогда, имея файлы в хранилище, при помощи бота просто раздавать ссылки HTTP.
    Ответ написан
    Комментировать
  • Где лучше всего хранить файлы различного размера?

    2ord
    @2ord
    А среди облачных хранилищ рассматривали вариант с S3-совместимыми хранилищами, кои имеются в России и не только? У них ведь другие цены. Кроме AWS есть и другие игроки. Есть Oracle Cloud, Google Cloud, Azure Blob storage и прочие. Плюс ко всему, есть множество решений по CDN.
    В дополнение ко всему, с точки зрения модели бизнеса вы можете разделить на хранение небольшого размера файлов и большого, где можно подобрать какое-то особое решение.
    Ответ написан
    Комментировать
  • Какие решения подойдут для хранения и использования фото в сети?

    2ord
    @2ord
    Как вариант, использовать S3-совместимое хранилище в ближайшем регионе. Для сокращения количества обращений к нему использовать локальный кэш самых часто-запрашиваемых изображений.
    В Memcached/Redis устанавливать время истечения, скажем 1 час и держать не более X локально. Если имя/путь файла присутствует в кэше - брать из локального файлового хранилища, иначе - загрузить с удаленного.
    Правильно подобранный локальный кэш сэкономит использование S3 хранилища.
    Кроме прочего, стоит выбрать хранилище, где уровень доступности сервиса не самый высокий.

    Добавлено
    Нашел
    https://github.com/rhelmer/caching-s3-proxy
    Ответ написан
    4 комментария
  • В каких случаях предпочтение следует отдавать хранению информации в файлах, а не в БД?

    2ord
    @2ord
    В каких случаях предпочтение следует отдавать хранению информации в файлах
    Когда речь идет о конфигурации приложения, о мизерном количестве файлов и при этом нет связей между сущностями. Когда нет одновременного изменения состояния содержимого файлов разными процессами.
    Ответ написан
  • База данных в текстовом файле под Python?

    2ord
    @2ord
    Если данные предназначены преимущественно для их чтения (настройки программы и подобные), то форматы:
    XML, JSON, YaML, CSV.

    А, вообще, бояться SQLite не нужно.
    Ответ написан
    Комментировать
  • Ceph или хадууп?

    2ord
    @2ord
    Не работал с обоими, но, насколько понимаю, Hadoop заведомо не подходит, если речь только не об оффлайн хранении и обработке документов.
    Похоже, что вам остается Ceph, который, кстати, реализует интерфейс S3.

    Зато в MongoDB есть GridFS и она хорошо масштабируется. GridFS разбивает файлы и хранит их кусками 255 kB.
    Еще есть GlusterFS и другие решения.
    Ответ написан
    Комментировать
  • Где лучше хранить большой объем часто используемых данных?

    2ord
    @2ord
    Нужно вынести данные (изображения и пр. файлы) за пределы веб-сайта. Например, AWS S3, Azure Blob storage, GCP Cloud Storage или совместимые с ними сервисы. Также и на своих мощностях, если сильно надо.
    Таким образом, при скачивании ~100 ГБ с внешнего ресурса ваш сервер будет обслуживать клиентов без какой-либо дополнительной нагрузки.
    Ответ написан
    Комментировать
  • Linux как реализовать поиск и перенос файлов в автоматическую структуру каталогов?

    2ord
    @2ord
    Попробуйте мигрировать на S3-совместимые сервисы. Если хотите управлять хостингом своими ресурсами, то возьмите MinIO.
    При помощи утилиты mc (minio-client) можно скопировать всю структуру директорий как есть в свой облачный сервис или же в любые S3-совместимые сервисы.
    Подключите кэширующий сервер и тогда нагрузка на хранилище спадет.
    Ответ написан
    1 комментарий