Последняя версия DataExpress 3 beta от 12 февраля 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Получение данных из внешней базы Firebird

Взаимодействие DataExpress с операционной системой, другими приложениями и сервисами.
Аватара пользователя
Develop-Soft
Сообщения: 1234
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Получение данных из внешней базы Firebird

Сообщение Develop-Soft » Чт май 30, 2019 7:19 pm

По многим причинам это не очень удачная затея. Лучше использовать внешние средства и протоколы, предназначенные для работы с файлами - облачные диски, webdav, samba и т.п.

Аватара пользователя
Иван
Интересующийся
Сообщения: 109
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 14 раз
Поблагодарили: 3 раза

Re: Получение данных из внешней базы Firebird

Сообщение Иван » Чт май 30, 2019 7:28 pm

Develop-Soft писал(а):По многим причинам это не очень удачная затея. Лучше использовать внешние средства и протоколы, предназначенные для работы с файлами - облачные диски, webdav, samba и т.п.


Так и есть, в принципе сейчас основная ДХ установлена на дропбоксе, как и файловая система (папка с файлами), и каждое сохранение новой записи или файла делает резервную копию на Дропбоксе (платный пакет). Это наверное самый большой плюс Дропбокса как облачного хранилища. Но хотелось именно что б все было в базе данных из сетевым доступом по Fifebird (имею ввиду файлы). Так как сейчас для доступа к файлам использую опен сервер (расшаривание файлов при их добавлении) что б каждый пользователь что не установил дропбокс мог иметь доступ к файлам по ссылке. А если использовать вторую ДХ как хранилище файлов то никаких других примочек и не нужно, одна база хранит файлы, вторая бизнес процессы.

Аватара пользователя
Develop-Soft
Сообщения: 1234
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Получение данных из внешней базы Firebird

Сообщение Develop-Soft » Чт май 30, 2019 7:38 pm

Иван писал(а):А если использовать вторую ДХ как хранилище файлов то никаких других примочек и не нужно, одна база хранит файлы, вторая бизнес процессы.
Вы пытаетесь ввязаться в схему, которая проблематично реализуема и самое главное - она гарантированно не даст должного результата. Самый простой и наименее замороченный вариант - выбрать тип хранения в поле файл "папка" и использовать облачный диск для синхронизации. Либо же использовать хранение в текущей базе (кто запрещает?).

Аватара пользователя
Иван
Интересующийся
Сообщения: 109
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 14 раз
Поблагодарили: 3 раза

Re: Получение данных из внешней базы Firebird

Сообщение Иван » Чт май 30, 2019 7:49 pm

Develop-Soft писал(а):
Иван писал(а):А если использовать вторую ДХ как хранилище файлов то никаких других примочек и не нужно, одна база хранит файлы, вторая бизнес процессы.
Вы пытаетесь ввязаться в схему, которая проблематично реализуема и самое главное - она гарантированно не даст должного результата. Самый простой и наименее замороченный вариант - выбрать тип хранения в поле файл "папка" и использовать облачный диск для синхронизации. Либо же использовать хранение в текущей базе (кто запрещает?).


Дело ясное. Вот только не желательно что б сотрудники разных отделов имели доступ к не своим файлам. Что отбрасывает вариант общедоступного диска. Сейчас все разбито по уровням доступа. То есть если у сотрудника есть доступ к производству у него есть доступ к папке производство на дропбокс (грубо говоря ему раздали эту папку). Но у него на диске хранятся все файлы что не хорошо, файлы должны существовать только на центральном сервере.

Идеально, если у пользователя есть доступ к записи то он может получить доступ к ее файлам. Пока что этот вариант двух ДХ мне показался самым простым решением в плане количества включенных решений в работу сохранения и получения файлов и минимального количества ошибок.

Аватара пользователя
Develop-Soft
Сообщения: 1234
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Получение данных из внешней базы Firebird

Сообщение Develop-Soft » Чт май 30, 2019 7:55 pm

Ну тогда единственный оптимальный вариант с малой кровью - тип хранения: "в базе".

Аватара пользователя
Иван
Интересующийся
Сообщения: 109
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 14 раз
Поблагодарили: 3 раза

Re: Получение данных из внешней базы Firebird

Сообщение Иван » Чт май 30, 2019 8:03 pm

Develop-Soft писал(а):Ну тогда единственный оптимальный вариант с малой кровью - тип хранения: "в базе".


К сожалению не подходит по объему файлов, много тяжелых документов. Потому и заинтересовал вариант SQL запроса. Ранее сделал вариант отправки и получения на FTP что отбросил так как нет гарантии что файл дошел целым. Попробую еще покопать в направлении кодировки в base64.

Аватара пользователя
Develop-Soft
Сообщения: 1234
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Получение данных из внешней базы Firebird

Сообщение Develop-Soft » Чт май 30, 2019 8:23 pm

Иван писал(а):не подходит по объему файлов, много тяжелых документов.

и
Иван писал(а):Потому и заинтересовал вариант SQL запроса.

не вяжутся по определению, т.к. к той же тяжести добавляется еще геморрой по реализации логики работы с получаемыми файлами и их загрузкой на сервер.
Также приплюсовываем к к общей "жирности":
Иван писал(а):в направлении кодировки в base64.

это значит - добавляем к общим тормозам увеличение размера файла на 25..35% и посыпаем сверху пудрой от расплавленного процессора, который будет выполнять кодирование/декодирование в base64 больших файлов, добавляя к тормозам дополнительный таймаут (это если все пройдет удачно и не выстрелит "out of memory")...

Вы все еще хотите двигаться в этом направлении? Не советую.

Если хотите попробовать хранение в отдельной базе и всячески позаморачиваться - попробуйте допилить вот эту обертку. Взяв за основу идею, можно попробовать (разумеется написав скрипт) сделать своего рода связанное хранилище.

Аватара пользователя
Иван
Интересующийся
Сообщения: 109
Зарегистрирован: Сб дек 22, 2018 2:16 pm
Благодарил (а): 14 раз
Поблагодарили: 3 раза

Re: Получение данных из внешней базы Firebird

Сообщение Иван » Пт май 31, 2019 11:20 am

По сути связанное хранилище и есть желаемым результатом, изучу, спасибо.

Чутка обмозговав вариант думаю хорошим решением может быть создание в рабочей ДХ формы буферной записи и выгрузки что создается для определенного пользователя. То есть при добавлении файла (файлов) они копируются именно в форму для временного хранения с полем файл (таблицей как у расширении FileStore что дает мультизагрузку) и полем путь, какой нужно присвоить файлу на сервере. То есть он уже на сервер попал. После чего на запущенном на сервере клиенте с таймером идет проверка нет ли новых файлов в буферной записи (пока другой вариант не вижу), и если они есть копирум в определенную папку на сервере (из поля Путь) при необходимости создав ее (то есть не используем вторую ДХ).

Следующая партия файлов аналогичным образом перезаписывает поле (поля) файл буферной формы.

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

Если проигнорировать что это морочно сделать. Какие есть комментарии по такому принципу работы? И возможно есть вариант без открытого клиента с таймером на сервере для записи и выгрузки из записи?

Аватара пользователя
admin
Разработчик
Сообщения: 4707
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 23 раза
Поблагодарили: 192 раза

Re: Получение данных из внешней базы Firebird

Сообщение admin » Пт май 31, 2019 1:27 pm

Иван писал(а):
Develop-Soft писал(а):Ну тогда единственный оптимальный вариант с малой кровью - тип хранения: "в базе".

К сожалению не подходит по объему файлов, много тяжелых документов...

Файлы можно хранить в отдельной форме, а в других формах выводить запросом.

cordek
Опытный
Сообщения: 368
Зарегистрирован: Вс май 14, 2017 2:53 pm
Благодарил (а): 54 раза
Поблагодарили: 5 раз

Re: Получение данных из внешней базы Firebird

Сообщение cordek » Пт май 31, 2019 8:04 pm

Не надо разбивать базы, файлы прекрасно хранятся в основной базе. Размер базы ограничен только размером диска.