Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение и загрузка мультильтимедиа, Эффективная работа с данными 
:(
    Опции темы
AlexPro
Дата 20.12.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Имеется программа, работающая с числовой и текстовой информацией. Сохранение/загрузка идет через сериализацию. Все прекрасно работает, но появилась мысль добавить бантики в виде различных картинок и, возможно, другой мультимедийной инфы. Понятно, что грузить все это с основной информацией через сериализацию - мягко говоря, крайне неэффективно. Хотелось бы основную инфу грузить при открытии файла, а картиночки - по мере необходимости. Подозрительно посмотрел в сторону структурированных хранилищ, которые позволяют это делать, но по некоторым соображениям не хотелось бы их использовать. Базы данных не подходят совершенно. Кто нибудь занимался подобным извратом? Подскажите! Не могу сообразить, как реализовать.

Основные требования:
1. Все данные хранятся в одном файле (весьма желательно, если только возможно)
2. Основная информация грузится/сохраняется вся и сразу (через сериализацию)
3. Бантики извлекаются/сохраняются по мере необходимости.

Надеюсь, не слишком сумбурно получилось, голова совсем не соображает. smile 
PM MAIL   Вверх
takedo
Дата 20.12.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 1.6.2005

Репутация: нет
Всего: 3



дак чего паришься? Ты разбей на 2 раздела файл. 1 - это собственно инфа, 2- всякая шелуха. В начале файла укажи сколько байт информации и шелухи. При сериализации вторую чатсть просто куском вгоняй. А вдобавок имей метод, который работает только со второй частью, этот метод вызывай когда надо. Ну вообщем покумекай на эту тему smile 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
AlexPro
Дата 20.12.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Цитата(takedo @  20.12.2006,  19:51 Найти цитируемый пост)
дак чего паришься? Ты разбей на 2 раздела файл. 1 - это собственно инфа, 2- всякая шелуха. В начале файла укажи сколько байт информации и шелухи.

Проблема в том, что обе части будут изменяться в размерах (по мере добавления/удаления информации). И если первый кусок (основную информацию) можно рассматривать как единое целое, то для второй части требуется быстрый и удобный доступ к каждому отдельному элементу, а также минимизировать количество операций чтения/записи - собственно, это моя основная задача. А у меня, в каком бы направлении не думал, все мысли возвращаются к внутрифайловой FAT smile . Чем не изврат? Хотя... Если подумать... Может... smile 
Да нет, изврат это!!!
PM MAIL   Вверх
Earnest
Дата 20.12.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Сначала оцени объем бантиков. Если не очень большой (< 100 mb) смело грузи куском в оперативку и там извращайся как хочешь. Если больше - то же самое, только не в обычную память, а в файл-мэппинг. Если совсем много (так что все целиком грузить не хочется) - подумай все же о двух файлах. Главное четко сознавать: либо ты работаешь с файлом как с документом, т.е. грузишь и сохраняешь его целиком, либо как с базой данных. Причем первое совсем не подразумевает того, что ты будешь формировать готовые объекты (что может быть долго) - можно просто загружать "сырые" куски по-быстрому, и по мере надобности с ними ковыряться. Главное - чтобы в памяти (или в своп-файле) было все, что нужно для записи файла-документа с нуля. Сериализацию лучше реализовать так, чтобы коду было по барабану, откуда читать\писать - из файла или из памяти - лучше всего для этого потоки стандартной библиотеки подходят. Другими словами, отделить открытие\закрытие файла от самого чтения\записи.


--------------------
...
PM   Вверх
AlexPro
Дата 21.12.2006, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Цитата(Earnest @  20.12.2006,  22:49 Найти цитируемый пост)
Сначала оцени объем бантиков.

Достаточно трудно: зависит от того, что пользователь туда напихает. Так что от нулевого до сотен мегабайт.
Цитата(Earnest @  20.12.2006,  22:49 Найти цитируемый пост)
подумай все же о двух файлах.

Думаю. С двумя файлами гораздо легче. Но есть риск, что нерадивый пользователь скопирует куда-нибудь один и забудет про другой.
Цитата(Earnest @  20.12.2006,  22:49 Найти цитируемый пост)
Сериализацию лучше реализовать так, чтобы коду было по барабану, откуда читать\писать - из файла или из памяти - лучше всего для этого потоки стандартной библиотеки подходят.

Интересная мысль. Earnest, спасибо за наводки, буду думать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.