• No results found

Precis som i pilotstudien är MongoDB snabbare på att hämta data i en Node.js REST api på sökfrågorna som har testats ovan. Dessa mätningar gjordes för att kunna svara på frågeställningen som skapades, “Vilken databashanterare har kortast responstid i att hämta data i en Node.js REST api?”. I pilotstudien upptäcktes det att Couchbase alltid hade en responstid runt 500ms. För att testa detta ytterligare skapades då 2 nya endpoints. Den första endpointen som skapades hämtar ett helt dokument och den andra endpointen hämtar ett fält från ett dokument. Detta visas på figur 31 och 33 ovan. Att Couchbase var snabbare på att hämta ett helt dokument än ett fält är förvånande, men Couchbase hade här en responstid på 211 respektive 402ms. Vilket bevisar att Couchbase endast skickar delmängden av datan som efterfrågas vilket var ett frågetecken som uppstod i pilotstudien.

Det enda testet som Couchbase var nära MongoDB på var att hämta all data. Här var skillnaden endast 30ms på medelvärdet (figur 25). I de andra testen ändras responstiden för MongoDB ganska drastiskt, vilket är logiskt då det är olika delmängder av data som hämtas på sökfrågorna. Det konstiga är då att Couchbase håller sig på en jämnare nivå och går endast under ett medelvärde på 400ms en gång (figur 31 ovan), vilket är i testet som hämtar ett NoSQL dokument i taget.

Utifrån mätningarna som gjorts lutar det mot att mothypotesen, MongoDB har kortare responstid än Couchbase, är sann. Eftersom resultatet på varje test var att MongoDB hade kortare responstid, ofta väldigt mycket kortare, är detta enda slutsatsen som kan dras.

7.1. Sammanfattning

Detta arbete jämförde MongoDB och Couchbase i en Node.js utvecklad REST api, för att se vilken databashanterare som har kortast responstid i att hämta data. Artefakten som skapades var en REST api utvecklad i Node.js ramverket Express. Paketet Mongoose användes till utvecklingen av MongoDB endpointsen. Totalt skapades 5 endpoints till MongoDB respektive Couchbase, som hanterade 5 olika fall:

 Hämta data  Hämta data på ett år

 Hämta data över en befolkningsmängd och sortera i fallande ordning  Hämta ett dokument och slutligen

 Hämta ett fält från ett dokument

De två sista skapades efter pilotstudien för att kunna testa databashanterarna utförligare, alltså från att hämta all data till att hämta endast ett fält. Studien bestod av 6000 mätningar på varje endpoint. Det var ett teknologi-orienterat experiment som valdes då egna mätskript utvecklades. Exakt det som mättes var tiden det tog att skicka en REST begäran till endpointen, hämta data från databasen och sedan visa det i JSON i webbläsaren.

Studien visade att MongoDB hade kortare responstid än Couchbase i samtliga tester. MongoDB var även ofta mycket snabbare än Couchbase, Couchbase var bara under medelvärdet på 400ms på ett av testen. Därför lutar det mot att mothypotesen “MongoDB kommer att ha kortare responstid i att hämta data i en REST API än Couchbase” stämmer.

31

7.2. Diskussion

Băzăr et al (2016) visade i sin studie att Couchbase var bättre på att hämta data än MongoDB, vilket inte alls visades i denna studie. Då MongoDB hade kortare responstid i samtliga test. I sina tester skapade Băzăr et al (2016) scenarier som simulerade att en interaktiv applikation skapades, sedan mättes latens medelvärdet på systemets belastning. I detta arbete testades det annorlunda genom att mäta responstiden i att hämta och visa datan i webbläsaren. Även fast databaserna kördes på samma dator och testades lokalt utan nätverkslagg, kanske de kan konfigureras på andra sätt för att optimera resultatet. I nuläget testades databaserna som de kom utan ytterligare konfiguration. Exempelvis skulle konfigurationen av RAM kunna vara en faktor för ett annat resultat.

Eftersom MongoDB har så mycket snabbare responstid än Couchbase med detta strukturellt enkla dataset på befolkningsdata finns det andra områden och sätt att testa för att få ett bredare resultat, och då se på ett större sätt vilken av dessa databaser som passar i vilken situation. Det självklara är att det endast är hämtning av data som testas i denna studie. Detta är en väsentlig del av en databashanterare. Men de andra grundläggande funktionerna: lägga till, ändra och radera testades ej. Detta är något som borde testas i en större studie. Ett kortsiktigt sätt att utveckla studien är att just testa mer än att hämta data. Denna studie har simpla sökfrågor då datasetet är väldigt enkelt. Att testa med ett mer komplext dataset skulle då vara intressant ur ett långsiktigt perspektiv. Exempelvis flera tabeller som kopplas ihop med ett värde. Eller om datasetet har fler “nivåer”, som Arrays i Arrays. För att då kunna testa mer komplexa sökfrågor. Detta för att se vilken av databashanterarna som kan hantera mer svåra former av datahämtning. Eftersom Couchbase medelvärde på responstiden är nära MongoDB på att hämta all data, kan det då vara av intresse att använda ett större dataset i tester för att se om Couchbase är mer lämplig för att hantera större mängder data.

Något som kan skapa frågetecken kring trovärdighet är just att vissa mätningar hade enstaka spikar, vilket indikerar störningar. Men eftersom de var få och inte speciellt stora kan det inte ha påverkat resultatet mycket egentligen. Speciellt eftersom MongoDB hade mycket kortare responstid på nästan alla mätningar. Ett annat problem kring resultatets trovärdighet är att paketet Mongoose användes för MongoDB, när inget paket användes för Couchbase. Även om det är osannolikt att det har stor effekt på resultatet kan det finnas bakomliggande funktioner i mongoose som gör MongoDB mer effektiv jämfört med Couchbase vanliga kod i Node.js REST api:t.

Kring etiken som skrivits i kapitel 4.2 har ett antal metoder använts för att säkerställa att det följts. Datan som slumpades fram för testen lades i en array för att det skulle vara samma data och i rätt ordning under mätningarna av MongoDB och Couchbase. Databaserna hade samma förhållanden eftersom de kördes på samma dator och de gjordes om mellan varje mätning. För att då säkerställa att ingenting hände i bakgrunden. För att andra ska kunna replikera är koden öppen för alla på Github7.

Samhällsnyttan är att valet av databas i en REST api för utvecklare kan hjälpas åt med resultatet från denna studie. Att MongoDB i samtliga tester är snabbare än Couchbase kan leda till att folk väljer MongoDB ifall de har simpla dataset, som i denna studie. I större drag kan detta leda till nöjdare användare då datan kan hämtas snabbare.

32

Referenser

Bangare, S. L., Gupta, S., Dalal, M. & Inamdar, A. (2016). Using Node.js to Build High Speed and Scalable Backend Database Server. International Journal of Research in Advent Technology (IJRAT), NCPCI 2016. 19 Mars 2016, ss. 61-64.

Băzăr, C., & Iosif, C. S. (2014). The transition from rdbms to nosql. a comparative analysis of three popular non-relational solutions: Cassandra, mongodb and couchbase. Database Systems Journal, 5(2), ss. 49-59.

Bellotti, F., Berta, R., Kobeissi, A., Osman, N., Arnold, E., Dianati, M., Nagy, B. & De Gloria, A. (2019). Designing an IoT Framework for Automated Driving Impact Analysis. 2019 IEEE Intelligent Vehicles Symposium (IV). 9-12 Juni 2019, ss. 1111-1117. IEEE.

doi:10.1109/IVS.2019.8813989

Belqasmi, F., Singh, J., Melhem, S.Y.B., Glitho, R.H. (2012). SOAP-Based vs. RESTful Web Services: A Case Study for Multimedia Conferencing. IEEE Internet Computing, 16(4). ss. 54-63. doi:10.1109/MIC.2012.62

Berners-Lee, T., Fielding, R., & Masinter, L. (1998). Uniform resource identifiers (URI): Generic syntax. https://www.hjp.at/doc/rfc/rfc3986.html#sec_1.1.1 [2020-06-03]

Boicea, A., Radulescu, F., & Agapin, L. I. (2012). MongoDB vs Oracle--database comparison. 2012 third international conference on emerging intelligent data and web technologies, Bucharest, Rumänien 19-27 September 2012, ss. 330-335. IEEE.

doi:10.1109/EIDWT.2012.32

Couchbase (2020). About us | Couchbase. https://www.couchbase.com/about [2020-02-14]

Couchbase (2020b). Couchbase Documentation.

https://docs.couchbase.com/home/index.html [2020-04-17]

Datahub (2020). Population figures for countries, regions (e.g. Asia) and the world. https://datahub.io/core/population [2020-02-14]

Express (2020). Express - Node.js web application framework. https://expressjs.com/ [2020-02-17]

Express (2020b). Express 4.x - API Reference. https://expressjs.com/en/4x/api.html [2020-04-17]

Google (2020). Skapa kraftfulla kalkylark. https://www.google.com/sheets/about/ [2020-05-18]

33 Han, J., Haihong, E., Le, G., & Du, J. (2011). Survey on NoSQL database. 2011 6th international conference on pervasive computing and applications, Port Elizabeth, Sydafrika 26-28 Oktober 2011, ss. 363-366. IEEE.

doi:10.1109/ICPCA.2011.6106531

Hahn, E. (2016). Express in Action: Writing, building, and testing Node.js applications. Manning Publications.

Hecht, R., & Jablonski, S. (2011). NoSQL evaluation: A use case oriented survey. 2011 International Conference on Cloud and Service Computing, Hong Kong, Kina 12-14 December 2011, ss. 336-341. IEEE.

doi:10.1109/CSC.2011.6138544

Hubail, M. A., Alsuliman, A., Blow, M., Carey, M., Lychagin, D., Maxon, I., & Westmann, T. (2019). Couchbase analytics: NoETL for scalable NoSQL data analysis. Proceedings of the VLDB Endowment, 12(12), ss. 2275-2286.

doi: 10.14778/3352063.3352143

Kulnarattana, L. & Rongviriyapanish, S. (2009). A client perceived QoS model for web services selection. International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology, 6(2). Pattaya, Chonburi, Thailand 6-9 May 2009, ss. 731-734.

doi:10.1109/ECTICON.2009.5137151

Leavitt. N. (2010). Will NoSQL Databases Live Up to Their Promise? Computer, 43(2), 2010. ss. 12-14. IEEE.

doi:10.1109/MC.2010.58

Li, Y. & Sathiamoorthy, M. (2013). A performance comparison of SQL and NoSQL databases. 2013 IEEE Pacific Rim Conference on Communications, Computers and Signal Processing (PACRIM), Victoria, Canada 27-19 Augusti 2013. IEEE.

doi:10.1109/PACRIM.2013.6625441

Masse, M. (2011). REST API Design Rulebook: Designing Consistent RESTful Web Service Interfaces. O'Reilly Media, Inc.

MDN (2020). Using Fetch. https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch [2020-04-07]

MDN (2020b). performance.now(). https://developer.mozilla.org/en-US/docs/Web/API/Performance/now#Example [2020-04-11]

MongoDB, Inc (2020). The database for modern applications. https://www.mongodb.com/ [2020-02-14]

Mongoose (2020). elegant mongodb object modeling for node.js. https://mongoosejs.com/ [2020-04-11]

34 Mongoose (2020). Mongoose v.5.9.9. https://mongoosejs.com/docs/guide.html [2020-04-17]

Munonye, K. & Martinek, P. (2018). Performance Analysis of the Microsoft. Net- and Java-Based Implementation of REST Web Services. 2018 IEEE 16th International Symposium on Intelligent Systems and Informatics (SISY), Subotica, Serbien 13-15 September 2018. ss. 197-196. IEEE.

doi:10.1109/SISY.2018.8524705

Nayak, A., Poriya, A., & Poojary, D. (2013). Type of NOSQL databases and its comparison

with relational databases. International Journal of Applied Information, 5(4), Mars 2013. ss.

16-19.

Node.js (2020). About | Node.js. https://nodejs.org/en/about/ [2020-02-14]

Ojamaa, A. & Düüna, K. (2012). Assessing the security of Node.js platform. 2012 International Conference for Internet Technology and Secured Transactions. London, UK 10-12 December 2012. ss. 348-355. IEEE.

Pautasso, C. (2014). Restful web services: principles, patterns, emerging technologies. Web Services Foundations, ss. 31-51. Springer, New York, NY.

Rajamony R. & Elnozahy M. (2001). Measuring Client-Perceived Response Times on the WWW. 3rd USENIX Symposium on Internet Technologies and Systems. San Francisco, USA 26-28 mars, s. 16. ACM.

doi:10.1007/978-1-4614-7518-7_2

Schutt, K. & Balci, O. (2016). Cloud software development platforms: A comparative overview. 2016 IEEE 14th International Conference on Software Engineering Research, Management and Applications (SERA), Towson, MD, USA 8-10 June 2016, ss. 3-13. IEEE.

doi:10.1109/SERA.2016.7516122

Tilkov, S. & Vinoski, S. (2010). Node.js: Using JavaScript to Build High-Performance Network Programs. IEEE Internet Computing, 14(6), November - December 2010. ss. 80-83. IEEE. doi:10.1109/MIC.2010.145s

Wohlin, C., Runeson, P., Höst, M., Ohlsson, M.C., Regnell, B. & Wesslén, A. (2012). Experimentation in Software Engineering. Berlin. Springer.

Related documents