Show simple item record

dc.contributor.advisorRyeng, Norvald H.
dc.contributor.authorVågene, Lars-Olav
dc.date.accessioned2023-09-08T17:19:52Z
dc.date.available2023-09-08T17:19:52Z
dc.date.issued2023
dc.identifierno.ntnu:inspera:145904930:21911195
dc.identifier.urihttps://hdl.handle.net/11250/3088391
dc.description.abstractKollasjoner er regler som definerer rekkefølgen av tegn, noe som applikasjoner bruker for å sortere tekst for et gitt språk. International Components for Unicode (ICU) er et mye brukt bibliotek som blant annet har støtte for kollasjoner basert på Unicode-standarden. Det har omfattende støtte for kollasjoner for ulike språk og er et populært valg for applikasjoner som krever avansert kollasjonsstøtte. Kollasjoner i ICU er imidlertid ikke semantisk stabile, noe som betyr at de underliggende reglene kan endre seg fra versjon til versjon og dermed gi forskjellige resultater. Mangel på semantisk stabilitet er et problem for noen applikasjoner, som for eksempel databasesystemer (DBMS). Disse opprettholder indekser lagret på disk og disse kan bli gjort ugyldige av endringer i kollasjonsrekkefølge. Denne rapporten presenterer en prototype som oppnår semantisk stabilitet i kollasjoner basert på ICU. Implementasjonen er gjort i MySQL, men det generelle prinsippet bak gjelder for andre applikasjoner med lignende krav. Flere ytelsestester er gjort for å måle effekten av denne modifikasjonen. Disse viser at prototypen har sammenlignbar ytelse med den eksisterende implementasjonen i MySQL og at ICU i noen tilfeller gir betydelige ytelsesforbedringer. Vi demonstrerer også et verktøy for å verifisere at to kollasjoner er semantisk like. Dette verktøyet er interessant fordi det har kort kjøretid, noe som gjør det mulig å bruke som del av automatisert testing for å verifisere semantisk stabilitet. Verktøyet kan tilpasses til hvilket som helst kollasjonsgrensesnitt og er ikke spesifikt for MySQL. Vi bruker dette verktøyet for å verifisere at vår prototype er semantisk ekvivalent med de originale ICU-kollasjonene. Ut fra dette konkluderer vi med at det er mulig å oppnå semantisk stabilitet med ICU-biblioteket og at dette er en mulig løsning for applikasjoner som krever semantisk stabilitet.
dc.description.abstractCollations are rules defining the order of characters in a given language that applications use to sort text in a locale-aware fashion. The International Components for Unicode (ICU) library is a widely used text-handling toolkit with collation support. It has extensive support for collation in various languages and is a popular choice for applications that require advanced collation support. However, collations in ICU are not semantically stable, which means the underlying rules can change between versions and cause the same rule set to produce different results. Lack of semantic stability presents a problem for some applications, such as database management systems (DBMS). The indexes these maintain on disk can be invalidated by changes in collation order. This report presents a proof-of-concept prototype designed to enforce semantic stability in collations derived from ICU. We use MySQL in the implementation, but the general principle applies to other applications with similar requirements. Several benchmarking experiments measure the effect of this modification on performance. These show that our prototype has comparable performance to the existing implementation in MySQL and that ICU offers significant performance improvements in some cases. We also demonstrate a utility for verifying that two collations are semantically equivalent. This utility is notable for its fast run time, which makes it practical to use as an automated test verifying semantic stability. It is not exclusive to MySQL and is adaptable to any collation interface. We use this utility to verify that our prototype is semantically equivalent to the original ICU collations. From this, we conclude that it is possible to enforce semantic stability in the ICU library and that this is a practical solution for applications that require semantic stability.
dc.languageeng
dc.publisherNTNU
dc.titleUsing the ICU library for collations in MySQL
dc.typeMaster thesis


Files in this item

Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record