Dajbych.net


Srovnání databází pro UWP aplikace: SQLite, Realm & LiteDB

, 2 minuty čtení

uwp logo

Objektově orientované aplikace obvykle potřebují objektově orientované úložiště. Relace jsou dobré v mapování ukazatelů, ale mnoho technických omezení je skryto pod dokumentační kůrou. Není snadné vybrat správnou databázovou technologii, protože klady jsou napsány všude a zápory jsou rozloženy do mnoha problémů GitHubu. Je to jako koupit si nové auto. Znáte cenu, výkon a spotřebu paliva, ale musíte se zeptat na spolehlivost a náklady na údržbu.

SQLite

SQLite je napsán v jazyce C, což omezuje architektury procesorů UPW na ty, které SQLite podporuje, protože Windows nemá SQLite integrovaný. Není to velký problém, ale LiteDB toto omezení nemá. SQLite vyžaduje rozšíření sady Visual Studio SQLite for Universal Windows Platform, které se aktualizuje automaticky, ale pokaždé, když k tomu dojde, musíte ručně znovu vytvořit odkaz na projekt na sadu SDK. Verzi databáze lze sledovat pomocí příkazu pragma user_version, který je jednoduchý a efektivní. Pokud chcete použít Entity Framework Core, musíte cílit alespoň na Windows 10 Fall Creators Update, ve které UPW podporuje .NET Standard 2.0.

Království

Služba Realm postrádá podporu znaků UTF-8 pro cesty k souborům. To znamená, že služba Realm nemůže otevřít databázový soubor, pokud název uživatelského profilu obsahuje znaky mimo tabulku ASCII. Tato chyba přetrvává déle než jeden rok od začátku podpory UPW a neplánuje se žádná oprava. Služba Realm je použitelná pouze v prostředí Android nebo iOS. Spoléhá se také na Fody, který do procesu sestavení vkládá některé změny kódu. Když se Fody aktualizuje, sestavení se rozbijí.

LiteDB

LiteDB je napsán v C#, což znamená, že se dobře hodí do prostředí Visual Studio, NuGet a .NET. Vyžaduje .NET Standard 1.3, který je implementován od UWP 10.0.10240. Je to velmi užitečné pro jednoduché aplikace, ale když manipulace s daty vyžaduje složitá pravidla a výkon má vysokou prioritu, ukazuje se, že LiteDB potřebuje určité optimalizace rychlosti.