# XBUP - Dokumentace: Srovnání

### Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje porovnání dosažených výsledků s jinými obdobnými projekty.

O úroveň výše

### Obsah

1. Úvod
2. Výkonnostní charakteristiky
2.1. Velikost dokumentu
2.2. Výpočetní náročnost
2.3. Komunikační náročnost
3. Výkonnostní srovnání
3.1. Značkovací jazyky
4. Komerční přínos
5. Odkazy

### 1. Úvod

Ačkoliv primární implementace není optimalizována pro výkon, je již na této úrovni vhodné rozpoznat výkonnostní charakteristiky navrhované varianty reprezentace dat.

### 2. Výkonnostní charakteristiky

Nejprve je vhodné zhodnotit různé vlastnosti protokolu, vztahující se k výkonu. Jedná se především o nároky na procesor, paměť a přenosové kapacity

### 2.1. Velikost dokumentu

Primárním cílem není dosáhnout co nejmenší velikosti dokumentu, přesto dosahuje v této oblasti protokol XBUP relativně dobrých výsledků. Oproti textovým značkovacím jazykům je jistě úspornější. Ve srovnání se statickými binárními protokoly je sice náročnější, ale to je cena, kterou je nutné platit za dosahované vlastnosti. Výhodou je například to, že základní tvary čísel jsou jednobajtové, a tedy pro časté ukládání malých hodnot, lze dosáhnout vyšší účinnosti.

Do budoucna se počítá s možností komprese celých podstromů dokumentu a s transparentním přístupem k nim. To by mělo umožnit dosáhnout ještě větších úspor ve velikostech souborů.

### 2.2. Výpočetní náročnost

V případě výpočetních nároků na tom není protokol XBUP příliš dobře. Nepoužívá totiž tvary čísel, které se pro reprezentaci dat používají ve většině současných počítačů, a proto je nutné aplikovat převody. To platí jak o základních celočíselných typech, reálných číslech, tak i o většině zatím navrhovaných tvarech vyšších struktur, jako je například datum, či čas.

Mezi dobré vlastnosti naopak patří možnost uvádění délky bloků a díky čemuž je možné snadno přeskakovat bloky i celé podstromy a tedy dosáhnout rychlejšího přístupu k vnitřním blokům. Pokud by byla potřebná ještě výkonnější varianta, je možné vytvořit další pomocné struktury ukazatelů. Uvedením nekonečné délky bloku je možné se vyhnout nutnosti počítat dopředu velikosti bloků, což je vhodné především při generování komunikačních proudů v reálném čase. Tyto techniky je pak vhodné dle potřeby kombinovat.

### 2.3. Komunikační náročnost

Komunikační náročnost je závislá na množství a poměru dat proudících oběma směry a na vzájemné závislosti toku dat mezi oběma směry. Pokud na sebe oba proudy čekají, zvyšuje se celková doba pro komunikaci.

### 3. Výkonnostní srovnání

Protokol je možné srovnávat s několika druhy v současné době používaných protokolů a datových formátů.

### 3.1. Značkovací jazyky

Především srovnání s v současné době nejpoužívanějším značkovacím jazykem XML, může ukázat, jaký přínos by v této oblasti mohlo zavedení protokolu XBUP přinést.

### 3.1.1. Srovnání s XML

Standard XML patří k velmi propracovaným textovým značkovacím jazykům s důsledným zaměřením na interoperabilitu a rozšiřitelnost. Je orientován plně na textové vyjádření a má pouze minimální podporu pro nestrukturovaná binární data. Základní standard také nepodporuje rozlišení typu dat a existuje několik alternativních způsobů definování struktury a datových typů XML dokumentů, jako např. DTD, XML-Schema, Schematron, Relax NG. XML jako takové není pro potřeby univerzálního formátu vhodné především díky následujícím vlastnostem:

- Závislost na použitém jazyce - čitelnost pro lidi v jiném jazyce, reflektování změn jazyka, nejasná definice textovým pojmenováním, či zkratkou
- nejednoznačnost struktury - použití tagu vs. atributu
- textový formát - pro čtení je potřeba použít textový prohlížeč/textový editor, pro zpracování dat je potřeba parsovat text

Více viz. kritika XML Sucks, či Binary XML Use Cases.

Kromě XML lze srovnávat také související formáty, jejichž obdoba existuje i v protokolu XBUP:

- DTD - Document Type Definition reprezentuje omezení na názvy tagů, atributů a povolený rozsah podtagů ve stromu. Tyto vlastnosti jsou v protokolu XBUP definovány jako součást deklarace úrovně 2 a 3.
- XML Schema - Oproti DTD definuje navíc typy atributů a hodnot, případně omezení rozsahů výčtem, či hraničními hodnotami. Tuto schopnost poskytuje úroveň 5.
- CSS - Cascade Style Sheet je v protokolu reprezentován jako obecná transformace doplňující implicitní hodnoty či odkazy.

XML lze srovnávat například v následujících aspektech:

- Efektivita reprezentace -
- Rozšiřitelnost -
- Univerzalita - XML neposkytuje tak široké vyjadřovací možnosti jako protokol XBUP. Problémy jsou například v oblasti digitálního podpisu, šifrování či kompresí obecně. Tento problém je obvykle řešen použítím dalších formátů.

### 3.1.2. Binární varianty XML

Jednou z aktivit W3C byla také snaha o vytvoření binární varianty XML se zachování co nejvíce vlastností textového tvaru a přidáním vlastností nových. Tyto aktivity vyústily ve vznik mnoha variant binárního tvaru XML s možností dalšího vývoje až do výběru nejvhodnějšího kandidáta a jeho standartizaci. Technicky se jedná o komprimaci se zachováním přístupnosti stromové struktury.

### 3.2. Síťové komunikační protokoly

Jako další z možných srovnání se lze zaměřit na protokoly používané pro mezisíťovou komunikaci.

### 3.3. Jiné srovnatelné formáty

Přestože je cílem mnoha z následujících projektů úspěšná implementace pro zvolenou omezenou oblast, přesto tyto projekty mohou poskytnout srovnání v některých aspektech

### 3.3.1. Extensible Binary Meta-Language

Cílem projektu EBML je vytvořit kontajner pro datové objekty speciálně pak pro projekt multimediálního kontajneru Matroska.

Projekt EBML používá některé podobné typy, jako například přirozená čísla s proměnnou délkou. Nevýhodou je však specifické zaměření na multimediální kontajner a omezené možnosti rozšiřování funkcionality a také nedůslednost definic.

### 4. Komerční přínos

Dalším z aspektů je komerční dopad zavedení použití tohoto projektu. Výsledky se liší podle míry zavedení použití protokolu.

Náklady na zavedení závisí na nutnosti implementace podpory pro tento protokol do jazyka, či vývojového prostředí používaného pro vývoj daného produktu. Jelikož je projekt vyvíjen pod vhodnými licencemi, neměl by být problém nalézt v případě rozšíření tohoto projektu vhodnou implementaci pro požadovaný jazyk. ??

### 5. Odkazy

Vybrané související odkazy:

XML - Extensible Markup Language [http://www.w3.org/XML/]
Why XML sucks - [http://xmlsucks.org]
Binary XML use cases - [http://www.w3.org/TR/xbc-use-cases/]
EBML - Extensible Binary Meta-Language [http://ebml.sourceforge.net/]
Matroska - extensible open standard Audio/Video container [http://www.matroska.org/]

Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2008-07-15