powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как мапировать данные класса со свойствами %FileBinaryStream?
25 сообщений из 25, страница 1 из 1
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610467
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мапировать глобалы научился... А вот как мапировать данные класса со свойствами %FileBinaryStream?
Сделал класс
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
/// tmp
Class soi.data.tmp Extends %Persistent
{

/// test
Property test As %FileBinaryStream;

}


Потом программку
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
save
	n
	s file="\\ksa\box\tmp\t.jpg"
	s of=##class(%File).%New(file)
	d of.Open("RU")
	s oc=##class(soi.data.tmp).%New()
	d oc.test.CopyFrom(of)
	d oc.%Save()
	d of.Close()
	k oc
	k of
	q


Запись прошла без ошибок и файл потом записался обратно без проблем
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
load
	n
	s file="\\ksa\box\tmp\test.jpj"
	s oc=##class(soi.data.tmp).%OpenId(1)
	s of=##class(%File).%New(file)
	d of.Open("WNU")
	d of.CopyFrom(oc.test)
	d of.Close()
	k oc
	k of
	q


Но глобала ^soi.data.tmpD я не обнаружил... Но в каталоге stream в соответствующей БД я обнаружил файл с данными...

Глобал появился только когда добавил обычное поле
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/// tmp
Class soi.data.tmp Extends %Persistent
{

/// test
Property test As %FileBinaryStream;

/// str
Property str As %String;

}


и поменял программку
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
test
load
	n
	s file="\\ksa\box\tmp\test"
	s oc=##class(soi.data.tmp).%OpenId(3)
	s file=file_"."_oc.str
	s of=##class(%File).%New(file)
	d of.Open("WNU")
	d of.CopyFrom(oc.test)
	d of.Close()
	k oc
	k of
	q
save
	n
	s file="\\ksa\box\tmp\t.jpg"
	s of=##class(%File).%New(file)
	d of.Open("RU")
	s oc=##class(soi.data.tmp).%New()
	zw oc
	s val=$re(file)
	s val=$p(val,".")
	s val=$re(val)
	s oc.str=val
	d oc.test.CopyFrom(of)
	d oc.%Save()
	d of.Close()
	k oc
	k of
	q


Причём глобал отмапился в нужную мне БД... А вот "стрём" создался в текущей области.
Как теперь наладить мапирование "стрёмного потока" в нужную мне БД?

----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
Cache for Windows (x86-32) 2009.1.3 (Build 704_0_9104) Mon Mar 8 2010 19:31:10 EST
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610480
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaА вот "стрём" создался в текущей области.
Т.е. не в области конечно. Он создался в основной БД, а не в той, куда мапился глобал этого класса...
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610497
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём я был сильно удивлён, что всё "хранение в базе" сводится к простому копированию моих файлов в каталог stream с каким-то рандомным именем.
Я просто скопировал один такой файл, указав ему нужное расширение, и это оказался 1 в 1 мой файл.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610509
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно настроить хранение для стримового поля, в нужный глобал и его маппировать

в настройках хранения, это StreamLocation
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610531
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorНужно настроить хранение для стримового поля, в нужный глобал и его маппировать
Т.е. есть какой-то вариант таки направить это в глобал?
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610539
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorв настройках хранения, это StreamLocation
Вот всё, что нашел в доке на "StreamLocation"...
авторproperty StreamLocation as %SysPath;
Directory where the streams associated with this database go.
By default (value=""), the location is in the subdirectory "stream", underneath the database directory, e.g. for a database located in c:\abc, the default would be c:\abc\stream. InterSystems recommends leaving this parameter as "".
Т.е. про собственно глобал ни слова... Можно только путь поменять. А это не то.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610551
newbie'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaDAiMorНужно настроить хранение для стримового поля, в нужный глобал и его маппировать
Т.е. есть какой-то вариант таки направить это в глобал?
есть же %GlobalBinaryStream, а %FileBinaryStream - это "интерфейс к внешним файлам".
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610552
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и пример там только вот такой...

Код: vbnet
1.
Property Image As %FileBinaryStream(LOCATION = "C:/Images");



Про хранение в глобале что-то не найду...
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610554
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie'есть же %GlobalBinaryStream
Ща спробану, спасибо.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610571
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie' , спасибо. Такой вот вариант самое то!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/// tmp
Class soi.data.tmp Extends %Persistent
{

/// test
Property test As %GlobalBinaryStream;

/// str
Property str As %String;

}



Появился новый глобал ^soi.data.tmpS, его и отмапировал в нужную мне БД.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37610689
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa ,

Потоки

В новых приложениях лучше использовать классы пакета %Stream .

PS: если данные потока хорошо пакуются, то можно использовать класс %Stream.GblBinCompress
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611005
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitВ новых приложениях лучше использовать классы пакета %Stream .
Спасибо, учту.

servitесли данные потока хорошо пакуются, то можно использовать класс %Stream.GblBinCompress
А как понять, какие "данные потока хорошо пакуются"?
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611008
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас предположительно будут видео файлы, снятые вебкамерой... И картинки-сканы документов... Они "хорошо пакуются"?
Т.е. есть какие-либо критерии такой "хорошести"?
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611116
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaУ нас предположительно будут видео файлы, снятые вебкамерой... И картинки-сканы документов... Они "хорошо пакуются"?
Т.е. есть какие-либо критерии такой "хорошести"?

что видео, что картинки уже сжаты (кроме bmp), и их сжимать бесполезно
а сожмутся хорошо, например текстовые файлы
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611130
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaУ нас предположительно будут видео файлы, снятые вебкамерой...Есть avi, mpg, mp4...
krvsaИ картинки-сканы документов... Они "хорошо пакуются"?Есть bmp, jpeg, jpeg 2000, png, tiff...
Все они обладают разной степенью дальнейшего сжатия.
docx , например, хуже пакуется, чем doc , потому что уже запакован.
krvsaТ.е. есть какие-либо критерии такой "хорошести"?%Stream.GblBinCompress использует ZLIB (методы $System.Util.Compress/Decompress).
Возьмите Ваши файлы, сохраните в БД с/без сжатия и оцените размер полученных глобалов.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611146
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorа сожмутся хорошо, например текстовые файлы
Таких не предполагается пока...
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37611152
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitЕсть avi, mpg, mp4...
Есть bmp, jpeg, jpeg 2000, png, tiff...
Х/з что там клиент будет делать... Там одно хранение предполагает 5 лет. А за это время много чего вообще поменяется...

servitВозьмите Ваши файлы, сохраните в БД с/без сжатия и оцените размер полученных глобалов.
Ну так-то оно понятно...
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37619582
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

приветствую
у меня такая же проблема, можешь по подробнее расписать что еще мэпить нужно
было так:
Код: sql
1.
Property test As %FileBinaryStream;


стало так:
Код: sql
1.
Property test As %GlobalBinaryStream;


компильнул класс, сделал загрузку картинки
Пакет с классом и глобалы намэплины на одну БД, а стрим лег в папку "stream" другой БД

спасибо
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37620182
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007 , так мне уже помогли и я отписался как все разрешилось 11890416 ... Но все равно спасибо.

Пока вроде ничего мапить не требуется... А там посмотрим.
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37620196
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007у меня такая же проблема, можешь по подробнее расписать что еще мэпить нужно
Или у тебя такое как раз не получается? У меня-то получилось... Файлик пишется в глобал, глобал мапируется в нужную БД...
Что делал и как менял всё в этой темке показал... Ну и в темке про "Программное управление Каше"...
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37620206
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaв темке про "Программное управление Каше"...
Вот она
http://www.sql.ru/forum/actualthread.aspx?tid=906230

Более ничего не дорабатывал... Всё сделал практически одной программулькой...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
#define fileToProperty(%name,%prp) s %file=##class(%Stream.FileBinary).%New(),%file.Filename=%name do %prp.CopyFrom(%file) k %file
#define propertyToFile(%cls,%id,%prp,%name) s %file=##class(%Stream.FileBinary).%New(),%file.Filename=%name do %file.CopyFromAndSave(##class(%cls).%OpenId(%id).%prp) k %file
#define propertiesToFile(%prp,%name) s %file=##class(%Stream.FileBinary).%New(),%file.Filename=%name do %file.CopyFromAndSave(%prp) k %file

load
	n
	s file="\\ksa\box\tmp\test"
	s oc=##class(soi.data.tmp).%OpenId(1)
	s file=file_"."_oc.str
	$$$propertiesToFile(oc.test,file)
	k oc
	q
save
	n
	s file="\\ksa\box\tmp\t.jpg"
	s val=$re(file)
	s val=$p(val,".")
	s val=$re(val)
	s oc=##class(soi.data.tmp).%New()
	s oc.str=val
	$$$fileToProperty(file,oc.test)
	d oc.%Save()
	k oc
	q
maping
	n
	s ns=$zu(5)
	s Namespace="vdo"
	s Name="soi.data.tmpS"
	s Properties("Database")="vdo_media"
	zn "%sys"
	s Status=##Class(Config.MapGlobals).Create(Namespace,Name,.Properties)
	zw Status
	zn ns
	q



Вот класс
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/// tmp
Class soi.data.tmp Extends %Persistent
{

/// test
Property test As %GlobalBinaryStream;

/// str
Property str As %String;

}
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37620323
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я то думал, что у тебя файлы вне БД сохраняются ))
мне как раз нужно чтоб в папке стрим используемой БД все хранилось, без "доп настроек"
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37620985
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007я то думал, что у тебя файлы вне БД сохраняются ))
Неее я как раз добивался обратного.

Ymka2007мне как раз нужно чтоб в папке стрим используемой БД все хранилось, без "доп настроек"
Ясно...
Для внешнего хранения, я так понял, только
krvsa
Код: vbnet
1.
Property Image As %FileBinaryStream(LOCATION = "C:/Images");
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37621775
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
...
Рейтинг: 0 / 0
Как мапировать данные класса со свойствами %FileBinaryStream?
    #37622809
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007мне как раз нужно чтоб в папке стрим используемой БД все хранилось, без "доп настроек"
Насколько я помню, эта папка служит для временного хранения некоторых открытых потоков. Поэтому использовать ее для постоянного хранения не следует.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как мапировать данные класса со свойствами %FileBinaryStream?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]