Название: Загрузка файлов из БД Отправлено: Nidxogg от Июль 02, 2015, 18:56 Добрый день
Прошу подсказать пути решения следующей задачи: есть БД postgresql, в которой, в виде BLOB-oв хранятся файла большого размера(от 100мб и выше) Собственно, БД я использую однопоточно и загрузка файла приводит к замираю программы на длительное время. 1)Хотелось бы, чтобы файл загружался в фоновом режиме. Просьба подсказать возможные пути решения проблемы Кое что нагуглил в виде статьи http://www.linuxjournal.com/article/9602 и вроде даже работает, но загружаемые файлы (и информацию о них) необходимо обрабатывать разными способами. 2)Как можно модифицировать пример из статьи, чтобы оставить 1 объект подключения к БД, но иметь возможность идентифицировать на какой запрос пришел соответствующий результат? Название: Re: Загрузка файлов из БД Отправлено: vitfil от Июль 02, 2015, 21:05 Загружайте файлы в отдельном потоке. UI в основном потоке, работа с базой - в дополнительном.
Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 02, 2015, 21:12 Цитировать Загружайте файлы в отдельном потоке. Каким образом?Бинарные данные файла - результат запроса или я чего-то не понимаю? Цитировать работа с базой - в дополнительном А что по обертке?Как получить результат запроса из статьи понятно. Грубо говоря, жму на кнопку1 делаю запрос в потоке, получаю результат. Как определить что это результат именно по кнопке1, а не 2? Название: Re: Загрузка файлов из БД Отправлено: Bepec от Июль 02, 2015, 22:52 Это уже проблема вашей реализации.
Вы можете возвращать номер запроса, можете возвращать номер кнопки, можете возвращать имя запрошенного файла и так далее и тому подобное. Выбирайте сами исходя из задачи и масштабов. Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 03, 2015, 00:01 А если у меня используется ±полсотни запросов? Switch на 50 вариантов выглядит как-то не очень ???
Не хочется изобретать велосипед, чувствую что люди с опытом могут подсказать решение получше P.S. Вопрос с загрузкой файла ещё актуален Название: Re: Загрузка файлов из БД Отправлено: vbv от Июль 03, 2015, 05:23 А если у меня используется ±полсотни запросов? Switch на 50 вариантов выглядит как-то не очень ??? Не хочется изобретать велосипед, чувствую что люди с опытом могут подсказать решение получше P.S. Вопрос с загрузкой файла ещё актуален Нет в анализе такого понятия как 50 вариантов. Есть понятие 0, 1 и много. т.о. делать поток и в попок пихать идентификатор и держать его до завершения потока. Название: Re: Загрузка файлов из БД Отправлено: Bepec от Июль 03, 2015, 08:07 Вы можете возвращать номер запроса, Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 04, 2015, 13:35 Да это понятно
Как потом вызвать соответствующий номеру запроса обработчик? Название: Re: Загрузка файлов из БД Отправлено: Old от Июль 04, 2015, 14:09 Как потом вызвать соответствующий номеру запроса обработчик? Вы на вход должны передать id записи, из которой хотите прочитать блоб, на выходе вы получите id этой записи и сам блоб. Вот по id вы его и идентифицируете.Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 04, 2015, 14:40 ???
А что мне даст этот ID записи? Все равно в конце вставлять switch на N вариантов обработки? Название: Re: Загрузка файлов из БД Отправлено: Old от Июль 04, 2015, 14:42 А что мне даст этот ID записи? Покажите/расскажите, как обрабатываете эти блобы в однопоточной версии программы.Все равно в конце вставлять switch на N вариантов обработки? Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 04, 2015, 14:54 Собственно есть куча кнопок и соответствующие им слоты
В каждом из слотов делаю запрос, (к примеру по кнопке запросить документ) Код: QSqlQuery qSelect; Название: Re: Загрузка файлов из БД Отправлено: Old от Июль 04, 2015, 15:10 Решений может быть много: вы можете хранить пары id - action, после завершения загрузки блоба из записи с id, выполнить действие action. action может быть числом идентифицирующим действие или функтором. Можно этот action передавать потоку загрузки вместе с id записи, тогда не понадобиться коллекция пар. Много чего можно придумать.
Название: Re: Загрузка файлов из БД Отправлено: Nidxogg от Июль 04, 2015, 15:24 Пойду гуглить про функторы
спасибо P.S. Тема пока не закрывается |