Sharfik писал(а):1) Если в таблице хранятся файлы, то делать "Selet * From ..." в серверу БД не стоит? Поля Blob передаются в тот же момент, когда и прочие поля. И если в них много мегабайт, то беда совсем беда...
Есть проект, где хранятся фото/документы. Сама БД PostgreSQL предостовляет два вида записи файлов - через OID(LongInt), где нужно отдельно от таблиц получить, наподобие файлового значения - записываешь файл в бд, система дает этот ID которую нужно еще записать в таблицу. При SELECT * FROM значение будет получено в виде этого ID. Чтобы получить данные, нужно отдельно произвести загрузку.
И есть формат Binary(Array Byte) где при SELECT * FROM данные будут преданны клиенту полностью как есть, если файл большой - то возникают трудности. Поэтому приходится передавать без этого поля - конкретизировать поля в SELECT.
Sharfik писал(а):2) Есть поля для больших файлов. А есть механизм чтобы пошагово записать в одно поле данные из буфера? Я о том, что цивилизованно организовать запись файлов больше 100Мб в БД можно ли без подвисаний?
У меня было сделанно в одном проекте в виде сообщения что файл загружается - выделялся отдельный поток который занимался закачиванием этого файла.
Для удобства картинки писались в два поля, одно как есть, другая мини миниатюра 64х64.
Добавлено спустя 14 минут 25 секунд:zoltanleo писал(а):FIB+ на клиента сначала попадал ID блоба, по которому содержимое блоба выкачивалось из БД на клиента/с клиента в БД только при манипуляциях с ним. Думаю, что можно предположить аналогичный механизм у других компонентов доступа.
Зависит от реализации БД и клиента. Ну и само поле не всегда удобно хранить в виде ArrayByte, проще иметь TStream.