Enhetlig REST API for graf- og relasjonsdatabaser
Master thesis
Permanent lenke
https://hdl.handle.net/11250/2778073Utgivelsesdato
2021Metadata
Vis full innførselSamlinger
Beskrivelse
Full text not available
Sammendrag
Relasjonsdatabaser har eksistert i mange tiår og har vært den valgte databaseteknologien for lagring og henting for de fleste tradisjonelle applikasjoner. Etter at sosiale medier ble populært, har data blitt mer sammenknyttet og det økes stadig i størrelse og kompleksitet. Relasjonelle databasesystemer er generelt effektive med mindre dataene inneholder mange relasjoner som krever sammenføyning av store tabeller. Flere sammenføyninger på store tabeller kan potensielt påvirke spørringenes hentetid. Slike tilfeller medførte at databaseindustrien begynte å se etter alternative løsninger. Dermed ble NoSQL etablert og det ble innført nye databasemodeller med andre funksjoner som manglet i relasjonsmodellen.
Nettskyen har blitt en attraktiv og viktig IT-infrastruktur i vår hverdag og vil fortsette å endre verden vi lever i på flere ulike måter. Et av hovedproblemene med nettskyen er dataportabilitet mellom ulike skytjenester. Det er utviklet mer enn 50 forskjellige systemer innenfor NoSQL og hver av dem tilbyr forskjellige grensesnitt og datamodell. Dette medfører at det har dukket opp et signifikant antall nye API og databaser som applikasjonene må samhandle med. Dette krever at utviklere må ha bredere kunnskap, samt at det kan skape utfordringer med migrering av data mellom ulike type databaser.
Denne masteroppgaven foreslår en generisk ressursmodell for å representere ulike elementer fra forskjellige databaser i nettskyen. I tillegg har det blitt utviklet et enhetlig REST API for å håndtere relasjonsdatabasen MySQL og den grafbaserte NoSQL databasen Neo4j. API-et støtter relasjoner, CRUD-operasjoner, samt mer komplekse operasjoner for å sammenføye data via forhåndsdefinerte endepunkter. For at Neo4j skal støtte den generiske ressursmodellen har en rekke tiltak blitt innført. Det har også blitt utført eksperimenter for å teste funksjonaliteten til API-et og migrering av data mellom databasene.
Resultatene viste at API-et er i funksjonell stand til å migrere data mellom MySQL og Neo4j, men det ble gjort observasjoner på at ytelsen i Neo4j kan ha blitt påvirket, samt tiltakene som er innført for Neo4j har medført at databasen er mindre skalerbar og fleksibel, i tillegg til at det er høyere risiko ved oppdatering av eksisterende data. Relational databases have existed for many decades and have been the most widely used technology for traditional data storage and retrieval applications. Following the popularity of social media, data has become more interconnected, and the data constantly increasing in size and complexity. Relational database systems are generally efficient unless the data contains many relationships that require joining of large tables. Multiple joins on large tables can potentially affect query retrieval time. As a result, the database industry started looking for alternative solutions. Thus, NoSQL was established, and new database models were introduced with important features.
The cloud has become an important IT infrastructure in our everyday lives and will in several different ways continue to transform the world we live in. One of the main problems with the cloud is data portability between different cloud services. More than 50 different systems have been developed within NoSQL and each of them offers different interfaces and data models. This means that a significant number of new APIs and databases have been introduced that the applications need to interact with. This requires developers to be familiar with the different APIs, and the various cloud applications use specific data stores that prevent their migration.
This master's thesis proposes a generic resource model to represent elements from different databases in the cloud. In addition, a unified REST API has been developed to handle the MySQL relational database and the Neo4j graph-based NoSQL database. The API supports relationships, CRUD operations, and more complex operations to merge data via predefined endpoints. To support the generic resource model, several measures have been introduced for Neo4j. Experiments have also been performed to test the functionality of the API and migration of data between the databases.
The results showed that the API can migrate data between MySQL and Neo4j, but observations were made that the performance in Neo4j may have been affected, and the measures introduced for Neo4j have meant that the database is less scalable and it is a higher risk when updating existing data.