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

    Использовать совместимые с Amazon S3 сервисы. У него несложный API и есть множество библиотек клиентов с открытым кодом на различных языках.
    Ответ написан
    Комментировать
  • Какую методику хранения файлов лучше выбрать?

    Рекомендую пользоваться S3-совместимыми хранилищами данных. Они легко масштабируются.
    В зависимости от профиля работы можно сравнить цены между различными поставщиками, чтобы оценить возможности перехода на S3. Может, в облаке, а может и свою инфраструктуру поднять.
    Закачивать файлы и управлять ими через API. Раздавать - через CDN.
    Ответ написан
    5 комментариев
  • Как защититься от дублирования файлов при загрузке на сервер?

    Можно просто заменить алгоритм хэширования на BLAKE2b.
    Ответ написан
    Комментировать
  • Возможно ли получить уникальный идентификатор файла?

    Полагаю, что если строить свою ИС (инф. сист.) поверх прослойки, работающей посредством FUSE, то все упростится.
    В своей нижележащей ФС можно назначать файлам UUID. Файл - это некий объект, с которым может быть ассоциирована такая служебная информация, как имя файла или URI, в общем виде, которые подвержены частым изменениям. Набор таких объектов хранить в некой СУБД (допустим, SQLite).
    При монтировании хранилища посредством FUSE в какую-нибудь директорию наружу будут видны как обычные файлы. При изменении имени файла меняется только служебная информация об объекте в хранилище. Хранилище может быть как локальное, так и удаленное. При удалении файла-документа в хранилище можно пометить объект как подлежащий утилизации или же просто удалению. При изменении версии файла-документа меняется содержимое объекта в хранилище. В служебной информации (meta data) можно также хранить хэш от содержимого.
    Ответ написан
    Комментировать
  • Чанки: разбить и собрать, как это работает?

    Речь, судя по всему, о дедупликации данных.
    Каждый файл можно разбить на N равных отрезков данных и 1 остаточной длины. Если пронумеровать эти отрезки последовательно, сохранив в БД номера их последовательностей с их полученных хэшами и файлами-отрезками, именованными хэшами, то для восстановления содержимого файла будет достаточно найти в БД все принадлежащие заданному файлу куски данных, считывая их соответствующие данные из файлов-отрезков. Не важно на каких узлах хранилищ хранятся эти файлы-отрезки, а важно то что есть лишь 1 сервер, склеивающий в 1 целый файл.

    Дедупликация подходит в случаях частого повторения кусков контента. Допустим, много повторений может найтись среди архивов документов (дубликаты целых файлов или некоторых частей). Порой, дедупликация может дать хороший выигрыш когда одни и те же видео файлы находятся в разных уголках архива. Хотя шансов найти дубликаты кусков среди разных видео файлов очень малы.
    Ответ написан
    2 комментария
  • Где хранить датасет для опен-сорс проекта?

    Есть варианты с облаками (Yandex.Disk, Google Drive, OneDrive, Mail.ru Cloud, Mega), но у меня там все битком забито (создавать новый - через год удалят за неиспользование), ну и, по моему мнению, это не самый лучший вариант для хранения датасетов.
    Публичный набор данных как раз имеет смысл хранить и раздавать в облаке.
    Ответ написан
  • Как наиболее выгодно работать с изображениями?

    Изображения можно сохранить в том виде как было загружено, а можно также и произвести некоторую обработку (уменьшение разрешения, качества и т.д.), асинхронно.
    Изображения можно поместить в какое-то локальное хранилище, доступное для отдачи своим веб-сервером (Nginx, lighttpd, Apache httpd), или же загрузить их на удалённый сервер (Amazon S3) с последующим доступом через CDN (Amazon CloudFront).
    Приложение должно "знать" (т.е. хранить в БД) по какому пути сохранять и хранить URL по которому изображения будут доступны извне.
    Ответ написан
    Комментировать
  • Куда в моём случае оптимальнее сохранять данные - в файл или в базу mysql?

    Но данных много и я подумал - может стоит их кешировать на стороне сервера? А потом из кеша брать данные и на стороне клиента отрисовывать график?

    Само-собой напрашивается использование Key/Value хранилищ наподобие Memcached/TaranTool/Redis.
    При построении графика данные для графика сначала ищутся по некоторому ключу, допустим, "reports/report1000". Если такого ключа нет, то данные запрашиваются со стороннего сервиса и кладутся по тому ключу.
    Желательно класть данные в кеш со сроком истечения, по истечению которого k/v хранилище само очищает от неактуальных данных.
    Хранить данные от стороннего сервиса в кеше можно как есть (сериализованные в строку, конечно), а можно и предобработанные. Хранить можно просто как неструктурированные данные, так и в форматах JSON, XML и других.
    Один нюанс: данные должны быть небольшие по размеру, иначе k/v хранилище будет кушать много памяти, поскольку все данные находятся в RAM.
    Ответ написан
    Комментировать
  • Как правильно хранить относительно статические данные?

    Статические данные или динамически изменяемые - это не важно. Данные практически всегда имеет смысл хранить отдельно от кода. В программе нужно реализовать логику обновления данных.
    Еще немного усложним, теперь нам надо развернуть приложение на другой машине, допустим список стран у нас есть, но инфы от гугла то нет, а делать 200+ запросов как некая часть миграции - тоже не вариант..

    Можно продумать механизм обновления БД через интернет с некоторого сервера обновлений, поддерживающим несколько версий. На нём можно хранить версии БД с включающими необходимые данные.
    Другой вариант, более сложный: клиент подключается к серверу обновлений, скачивая дельту и накатывая её на локальную БД.
    Ответ написан
    Комментировать
  • Как сделать проверку значения string в файле .txt C# Console?

    Наверно такой бот должен работать с некоторой СУБД и при новых словах будет пополнять свой лексикон.
    Для начала в качестве СУБД можно взять файл CSV (самый простой вариант) и подсоединяться к ней как описано в https://www.codeproject.com/Questions/147298/conne...
    Ответ написан
    Комментировать
  • Выбор БД для файлов (или не БД)?

    В БД лучше хранить лишь текст, ссылки на внешние объекты и мета-информацию.
    Дедупликация может быть простой, на уровне файлов. В этом случае достаточно вычислить хеш-сумму (MD5, SHA-1) от содержания изображения целиком и на уровне хранения сверять с имеющимися хешами.
    Для дедупликации на уровне блоков в файле нужно искать более специализированные решения (ZFS volume и др.).

    По-моему к docker это вовсе не имеет отношения, т.к. речь не о виртуализации исполняемого процесса, а об организации хранения данных.
    Ответ написан
    Комментировать
  • Где искать информацию по интеллектуальному поиску?

    1) Во первых, мне не очень понятно в каком виде хранить информацию.
    На данный момент вижу это таким образом:
    каждому набору фильтров для поиска будет соответствовать набор URL:
    search_set_id => {URL1, URL2, ..., URLn}
    Поскольку одни и те же URL будут повторяться неоднократно среди результатов для разных фильтров, то чтобы не раздувать БД, лучше создать таблицу urls:
    id | url
    1 | http: //gugu.ru?p=1
    2 | http: //gugu.ru?p=2
    3 | http: //kuku.ru
    4 | http: //mumu.ru
    Таким образом, каждому search_set_id будет соответствовать набор id из таблицы urls.

    url_results
    url_id | search_set_id
    1 | 1
    2 | 1
    3 | 1
    2 | 2
    3 | 2

    Набор характеристик для search_set_id можно хранить как набор id из разных пар ключ-значение (паттерн EAV) или как единый JSON (hstore в СУБД PostgreSQL).
    Получив search_set_id можно найти соответствующий ему набор URL.

    2) Тут собственно стоит вопрос получения семантики предложения или отдельных слов. Есть ли готовые библиотеки, которые упростят мне жизнь и предоставят что-то уже написанное? Чтобы я только обучил нейросеть и выпустил в работу?

    Компьютерная лингвистика - нелёгкая наука. Копай сайт aot.ru , материалы Яндекс ШАД а также почитай про их Томита парсер и пр. Чуда ждать не стоит, лучше проконсультироваться с лингвистом.

    3) Что выбрать для серверного языка?

    Питон хорош тем что легко найти всякие библиотеки и в парсинге также популярен. Лучше бери то что лучше знаешь и на чём легче найти специалистов.

    4) Может кто знает какие нибудь книги, статьи - любые источники, где я могу посмотреть что-то на данную тему?
    Как вообще гуглить по таким запросам? :)
    Перед гуглением полезно чётко сформулировать свою задачу и не ставить слишком общие задачи. Про нейронные сети лучше забыть до лучшего понимания задачи.
    Ответ написан
    1 комментарий
  • Scrapy как сохранять большие объемы данных?

    Данные, конечно же, сохранять в реляционную СУБД, хоть SQLite, хоть MySQL.
    400 тыс. строк это фигня. даже для SQLite.
    С СУБД просто работать: чтение записей с лимитом по 1000 штук или всех сразу, делать всякие выборки по условиям и т.д.
    Ответ написан
    Комментировать
  • Данные постоянно растут. Как быть?

    Загружаемые файлы можно хранить на внешнем сервере. Это может быть Amazon S3 или S3-совместимое хранилище. Благо есть мильон компонентов для работы с S3 для разных ЯП.

    Кроме того, возможно, структуру БД можно улучшить. Без подробностей схемы ничего конкретного предложить не смогу.
    Ответ написан
    Комментировать
  • Архив с файлами всех возможных расширений?

    Алгоритм:
    1. Найти список типов файлов (в интернете полно сайтов)
    2. Вооружиться любым текстовым редактором, знаниями по написанию .bat/.sh и написать скрипт по генерации архива, поочередно занося каждый тип файла.
    Ответ написан
    Комментировать
  • Как хранить очень большое количество файлов? Как сохранять пути в БД?

    Ну если нужно прям очень большое количество файлов хранить, то вот есть список DFS.
    Ответ написан
    Комментировать
  • Имеет ли право такой способ хранения текстов в виде архивов для оптимизации скорости работы?

    Есть вариант решения: Хранить в БД только название вакансии и параметры для поиска, а описание хранить в ZIP архивах.

    В целом, хранение названия вакансии отдельно от подробного описания вакансии - правильный подход. И сжимать текстовые данные - тоже правильно. Вот только хранить описания в файлах ZIP не стоит по причинам, описанным index0h . Правильно хранить данные в СУБД. А сами текстовые данные можно сжимать любыми алгоритмами сжатия перед занесением. Также хочу прояснить, что ZIP - это контейнер файлов, в котором могут использоваться различные алгоритмы сжатия, от Shrunk и Deflate до таких как PPMd.

    В InnoDB СУБД MySQL 5.7 сжатие может применяться прозрачно при помощи директивы COMPRESSION:
    CREATE TABLE t1 (c1 INT) COMPRESSION="zlib";

    Поскольку вакансии обычно повторяются из месяца в месяц, от одной доски сообщений к другой, то скорее всего имеет место множественное дублирование одних и тех же вакансий. В таком случае можно применить технику оптимизации под названием "дедупликация данных".
    Для этого можно вычислять хеш-сумму криптографическими хеш-функциями, такими как SHA-1. Одни и те же описания вакансий будут иметь ту же хеш-сумму, что позволит хранить лишь одну копию описания. В таком случае данные буду разрастаться гораздо медленнее, чем без этой техники.

    Связи можно хранить так:
    job_vacancies(id, ...) <-> relations(source_id, packed_contents_id) <-> packed_contents(id, hash_sum, blob)

    С названиями вакансий вряд ли имеет смысл делать аналогично.
    Ответ написан
    Комментировать
  • Как хранить данные банковских карт?

    Раз такой вопрос задаётся, то лучше хранить данные не у себя, а у платёжной системы.

    Стандарт безопасности данных индустрии платежных к...
    Ответ написан
    Комментировать