ORDA: Přiřazení cesty k atributu blobu nebo obrázku

Automaticky přeloženo z Deepl

Databázové příkazy, které nejsou v systému ORDA, umožňovaly díky příkazu SET EXTERNAL DATA PATH umístit obrázky a bloby mimo datový soubor. Tento příkaz není přizpůsoben pro ORDA, a proto jsme se rozhodli přidat podobnou funkci do verze v20 R3: V tomto případě je možné přiřadit atributu blobu nebo obrázku cestu, která ukazuje na soubor. Dovolte mi, abych vám o ní řekl více.

HDI Cesta pro obrázek

Nejprve se podívejme na tento kousek kódu:

$myRecord:=ds.MyTable.new()
$myRecord.image:="C:/FolderWithMyFiles/myImage"
$myRecord.binary:="C:/FolderWithMyFiles/myBinary"
$myRecord.save()

Atributy obrázek a binární atribut jsou atributem obrázku, resp. blobu. Tím, že jim místo skutečného obrázku nebo blobu přiřadíte cestu, 4D vloží dovnitř datového souboru pouze zadanou cestu. Teprve když budete obrázek nebo blob používat, načte 4D soubor z disku a vytvoří správnou proměnnou obrázku nebo blobu. Pro vás to bude zcela transparentní.

Výhody a bezpečnostní opatření

Tento způsob má několik výhod:
– Uvnitř datového souboru neukládáte binární soubory. V důsledku toho zůstává váš datový soubor menší a rychleji se udržuje.
– Stejný soubor můžete použít pro více záznamů, aniž byste duplikovali obsah souboru.
– Soubory můžete uspořádat podle svých představ a používat je i v softwaru mimo 4D.

Existuje však také několik opatření, která musíte dodržovat:
– Protože 4D potřebuje soubor na disku, musíte se ujistit, že zůstane přístupný, kdykoli k němu 4D přistoupí.
– Když obrázku nebo blobu přiřadíte cestu, obejde to vlastnost pole „Uloženo“ ve struktuře databáze (vlastnost „Uloženo“ umožňuje zvolit, kam se má obsah obrázku nebo blobu uložit, mezi datovým souborem nebo externím datovým souborem).

Cesta POSIX nebo 4D.File

První část kódu přiřadí atributu cestu POSIX (akceptovány jsou pouze cesty POSIX). Dalším řešením je přiřadit 4D.File jako v tomto příkladu:

$file:=File("/PACKAGE/FolderWithMyFiles/myImage")
$myRecord:=ds.MyTable.new()
$myRecord.image:=$file
$myRecord.save()

Tento kód přiřadí atributu cestu k souboru 4D.File.

Co když změníte soubor na disku?

No, to je záludná otázka. Protože 4D ukládá obsah blobů a obrázků uvnitř své mezipaměti, může se dost dobře stát, že se nic nestane, dokud aplikaci nezavřete a znovu neotevřete. Pokud opravdu chcete mít možnost změnit soubor za běhu, můžete použít jeden trik: Přiřaďte cestu atributu ještě jednou. Jakmile 4D zjistí novou hodnotu, vyčistí svou mezipaměť a jako takový získáte nový soubor při příštím použití obrázku nebo blobu.
Poznámka: Pokud k obrázku nebo blobu přistupujete prostřednictvím prohlížeče, například pomocí Qodly nebo průzkumníka dat, nezapomeňte vymazat také mezipaměť prohlížeče.

Pokud máte nějaké dotazy, použijte fórum

Můžete se podívat do dokumentace a dozvědět se, jak tuto novou funkci používat. A pokud máte nějaký dotaz nebo připomínku, neváhejte se obrátit na naše fórum. Rádi vám pomůžeme.

Nicolas Brachfogel
• Product Owner & Senior Developer • Nicolas Brachfogel nastoupil do 4D v roce 2017 jako senior vývojář (4D server a sítě). Jako Product Owner, který řídí vydání Apple Silicon, má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací a také zajišťuje, aby implementace funkcí vyhovovaly potřebám zákazníků. Nicolas, absolvent Institut Supérieur d'Informatique Appliquée (INSIA), začal svou kariéru jako softwarový vývojář v roce 2001. Po několika letech kódování v Javě a C++ se specializoval na vývoj klient-server pro společnosti zabývající se videohrami. Jako serverový vývojář/architekt úspěšně pracoval na serverových architekturách mnoha her (Dofus Arena, Drakerz, Trivial Pursuit Go!).