Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Auto-Moto
Mobilní telefony
Notebooky  |  Tablety
Příslušenství
Wearables  |  Ostatní
Svět hardware  |  Digimanie  |   TV Freak

Databáze, aneb rveme do PDA co nejvíce dat. XML? SQL CE? Text? Co je nejvhodnější?

plachow_ce4you (159)|9.2.2007 09:21
Dělám jeden program na WM5 (VB.NET, Compact Framework 2.0), kde potřebuju přístup k offline datům. Databáze má cca 6MB v Accessu, má jednu tabulku s cca 17.000 řádků, 20 fieldů s rozumně krátkými hodnotami v polích (vyjímečně v jednom poli >255 znaků).

Myslel jsem si, že je to piece of cake, ale trochu jsem si včera na optimalizaci vylámal zuby.

Začal jsem straight :-) Vyexportoval jsem tabulku z Accessu do XML. Vznikl 8.6MB soubor. To by se ještě dalo +- překousnout, i když v rámci univerzálnosti, pro lidi co nemaj kartu, jsem nechal výchozí app path v \program files.

A začaly problémy... Zkusil jsem natáhnout XMLko do datasetu pomocí LoadXML. Out Of Memory... Sakra. Tak jinak. Vyexportujeme CSV (4.3MB) a zkusíme natlačit do datasetu pomocí TextDataAdapter (OpenNetCF). Unspecified error. Doprčic :evil:

Je potřeba použít nějaké robustnější řešení. Nainstaloval jsem jádro SQL CE 2005. A jal se koumat jak je to s těmi *.sdf soubory. Jelikož jsem nenašel žádnej frontend, jak dostat z MDB soubor SDF, napsal jsem si na PPC převodní proceduru, která data četla z XML pomocí XMLTextReaderu a cpala do SDF. Potud vše OK. Jenomže! Jelikož SQLCE podporuje jen unicode datové typy polí (NVARCHAR a NTEXT), sdf soubor rostl do gigantických rozměrů. Po vložení cca 3000 záznamů jsem byl někde na 26MB, což fakt pro PocketPC nejde :((

Samozřejmě bych si mohl napsat vlastní engine, pracující buď nad textem, nebo nad XML (případně s nějakou RLE nebo jednoduchou slovníkovou kompresí). Ale nechci vymejšlet kolo...

Takže otázka do pléna, jak nejlépe na středně velké databáze (cca 10MB dat) v PocketPC?

aoc_ce4you (65)|9.2.2007 13:26
Já to všechno řeším přes XML, všechny tabulky jsem z sql vyexportoval do xml souborů, cca 10 000 řádků, xml soubory mají celkem zhruba 3 MB. V aplikaci se pak dá jednoduše s xml soubory provádět všelijaké akce, jako je mazání, update, přidávání nových vět atd. Nevím jak je to s rychlostí operací vůči sql ale mě to připadá celkem v pohodě.
charoon (9)|9.2.2007 16:36
Na ppc používám jako databázi sqlite. Velikostně je to jiná kategorie, než požaduješ, asi 35MB a je to bez problémů. Texty ukládá jako utf8, takže soubor tak nenarůstá. Generuju jí na PC z XML, které má asi 48MB. Zkoušel jsem i 60MB a taky to bylo provozovatelné. Používám to hlavně pro čtení. Při update asi 2000 řádků to chvíli trvalo. Ale stačilo přesunout měněné sloupce do vlastní méně oindexované tabulky a hned to bylo výrazně lepší. Tam to taky asi naráželo na pomalost sd karty při zápisu.
To jen pro příklad.
(hlavní objem dat ve dvou tabulkách 2000 řádků (velké texty) a 70000řádků (kratší texty))