Použití ORDA pro přístup k rozsáhlým tabulkám (zejména těm s relacemi) v režimu klient/server bylo výrazně vylepšeno. S verzí 4D v17 R5 uvidíte 2-3x vyšší výkon v síti LAN a až 30x vyšší výkon v síti WAN. A co je nejlepší – není třeba nic měnit ve vašem kódu, vše je automatické. Zajímavé, že? No, pojďme se ponořit do podrobností.
Obvykle se při načítání záznamu v klientské aplikaci přenášejí všechna pole záznamu ze serveru. Dokonce i ta, která nepotřebujete. Výkon tedy závisí na návrhu vaší aplikace, struktuře databáze a možnostech sítě … zejména při použití velkých tabulek s více nebo velkými poli. Například na pomalé síti WAN při použití jen několika polí v seznamových polích založených na výběru (z tabulek s desítkami polí, které mají mnoho vztahů/polí a velký text/obrázky) bude vaše aplikace brzy mimo provoz.
Požadavky ORDA dříve používaly stejný princip načítání polí … až dosud! Ve verzi v17 R5 server analyzuje potřebné atributy v každé datové třídě a identifikuje související atributy, takže se mezi serverem a klientem přenášejí pouze požadovaná data.
PŘÍKLADOVÁ STUDIE
Pro ilustraci těchto vylepšení použijme jednoduchou databázi:
Tabulka Book má 1 000 záznamů. Její souhrnné pole obsahuje od 100 do 2 000 znaků a pole miniatur obsahuje přibližně 10KB obrázků. V související tabulce Autor obsahuje pole životopisu v každém záznamu 10 000 znaků.
Pomocí této databáze jsme vytvořili dva seznamy založené na výběru: jeden pomocí výběru entit ORDA a druhý pomocí klasického výběru. V každém poli seznamu jsme se rozhodli zobrazit název knihy s jejím autorem, abychom aktivovali vztahy. Přidali jsme také akci pro automatické posouvání pole seznamu, aby výsledky nemohla narušit žádná lidská činnost:
Měření v tabulce níže ukazují rámce TCP, které byly přeneseny mezi serverem a klientem (včetně všech potvrzovacích odpovědí) příkladu ve videu. Síťové připojení klienta je Wi-Fi typu „802.11ac“ (250 Mb/s stahování, 100 Mb/s odesílání , se zpožděním 1 ms):
Mode | Frames | Overall size (bytes) | Doba trvání: (ms) |
Klasické | 4,070 | 473,924 | 5,747 |
ORDA | 46 | 6,744 | 692 |
Jak vidíte, při použití ORDA se přenese jen několik snímků! A doba trvání? Čím pomalejší je síť, tím větší je rozdíl mezi ORDA a klasickým přístupem.
Nový koncept: Kontext OPTIMALIZACE
Ten umožňuje zaznamenat, co se systém naučil, a později to znovu použít. K tomu stačí vytvořit objekt volby obsahující atribut„kontext“ a před zadáním objektu jako parametru zadat požadovanou hodnotu:
Pokud (Form.currentContext=Null)
Form .currentContext:=New object("context"; "contextListboxBookAndAuthor")
End if
Form .books:=ds.Book.all(Form.currentContext)
Tento volitelný objekt lze nyní použít s Create entity selection příkazem a následujícími členskými metodami: dataClass. query (), entitySelection. query (), dataClass. fromCollection () a dataClass. all().
N.B: V tabulce měření jsme neaktivovali funkci kontextu, abychom byli co nejpřesnější.
Závěrem:
ORDA zjednodušuje váš vývoj:
- Urychluje přenos informací – beze změn kódu.
- Nemusíte přesouvat velká pole z tabulky a ukládat je do související tabulky 1-1, abyste zabránili dopadům na režim klient/server.
- Když chcete přistupovat k serveru mimo síť LAN, můžete nyní připojit klienta přímo … bez použití technologií vzdálené plochy.