|
|
|
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Приветствую Всех!
Столкнулся с проблемой сохранения массива байт в поле (blob) базы mysql. Необходимо файл (бинарный) записать (его) в поле. Размер небольшой, использую MySql Api. Может быть через потоки?: TFileStream* stream=new TFileStream("c:\\1.bin",fmOpenReadWrite|fmShareExclusive); stream->Seek(0,soFromBeginning); ..... Прошу Вашей помощи. Это сообщение отредактировал(а) Alexey68 - 27.2.2017, 01:01 |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Ну для начала это вообще плохая идея хранить файлы в базе.
В ЛЮБОЙ. Сколько раз пробовал, но находил более лучшее решение. Может и не спроста вас ВСЕЛЕННАЯ предостерегает ? |
|||
|
||||
Alexey68 |
|
|||
Alexey Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
||||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
Объясните, пожалуйста, почему? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Да легко. Прочитать файл с диска (по указанному пути) намного дешевле по ресурсам чем выдёргивать из многогигобайтной базы например. В базе его еще надо найти... Да, искать будет база, но не удивляйтесь если вдруг все ляжет ) Короче проще изначально пути там хранить. Лучшего решения нет. И couchdb с аттачами не алё. По старинке - статикой Это сообщение отредактировал(а) _zorn_ - 3.3.2017, 19:48 |
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
_zorn_,
I. Чтобы прочитать данные из файла нужно: 1) найти в БД запись (например по дате/времени) 2) вычитать из БД в память имя файла 3) найти этот файл на диске 4) открыть файл 5) прочитать данные из файла в память Чтобы прочитать данные из БД нужно: 1) см. п. 1 выше 2) прочитать данные из БД в память Ничего не напрягает? II. Если требуется забэкапить БД на одной машине и развернуть на другой, как Вы думаете, какой способ хранения удобнее? III. Как быть, если БД находится на одном компьютере, а клиентская программа - на другом? Можно, конечно, держать в БД сетевые пути к фалам (a la \\server\share\path\to\file), но как быть, если компьютер с сервером БД на Windows, а клиент на Linux или наоборот? Есть, конечно, решения, но как Вы думаете, будут ли они быстрее, чем хранить данные в blob'ах? IV. Приходите, пожалуйста, сюда в следующий раз с цифрами. Типа: Я протестировал 4 варианта: MySql и PostreSQL с файлами и с блобами. Вот времена: ... ... ... ... Съел, borisbn? Или "простите, был не прав, вспылил" Схватка милого кота со злобным инопланетянином )) Это сообщение отредактировал(а) borisbn - 4.3.2017, 09:29 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Правила форума "C++: Базы данных" | |
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |