• No results found

Det framkom att följande kombination av metoder resulterade i bäst systempre-standa: användandet av förberäknade värden, den egna lagringsmetoden, samt da-taformatet Protobuf. Resultatet av komponenttestet med kombinationen ovan vi-sade vilka delmoment som tog upp störst andelar av tidsåtgången i systemet. Där-med går det att utgöra vilka delar som kan arbetas vidare Där-med för ytterligare pre-standavinster.

Hämtningsdelen var i princip eliminerad, och istället utgjorde överföringen majori-teten av tidsåtgången. Överföringen skulle möjligtvis kunna minskas ytterligare genom att använda en komprimeringsteknik. Komprimeringen skulle läggas till efter dataformatet är applicerat, det vill säga att båda tekniker skulle användas till-sammans. Syftet med komprimeringen skulle vara att minska storleken på datan som skulle överföras med hopp om att minska överföringstiden. Detta förutsätter att komprimering- och dekomprimeringstiden är mindre än vinsten i överförings-tid. Exempel på vanliga tekniker för detta verkar vara zlib, Snappy och LZ4.

Det är också intressant för framtida arbeten att studera mycket större datamäng-ders påverkan på systemets prestanda. Vid tillräckligt stora datamängder blir dis-tribuerade lösningar mer intressanta, och därmed att undersöka vilken av tekni-kerna som presterar bäst under de förutsättningarna.

5.7 Hållbar utveckling

När det kommer till miljöaspekterna finns det vinster att göra eftersom att de som använder aCurve gör det för att övervaka stora processer, såsom reningsverk. Ifall de resultat som framkom under examensarbetet kan bidra till att förbättra aCurves prestanda kan det främja miljöarbetet som företag bedriver genom att effektivisera analys av viktiga sensorvärden inom de processer som kan påverka miljön. Det är också möjligt att examensarbetets resultat skulle kunna användas i andra liknande situationer och därmed ge samma miljövinst där.

Ifall de metoder och tekniker som uppdagats som mer ineffektiva under examens-arbetet används istället för de effektiva, kan en större mängd hårdvara behöva an-vändas för att kompensera. Det skulle i sin tur leda till negativ påverkan båda på miljön i och med resursåtgången, och även ekonomin då det innebär högre kostna-der att anskaffa mer hårdvara.

Vidare finns det fler anmärkningar att göra ur ekonomisk synpunkt, nämligen li-censkostnader. Några av databaserna kräver kostsamma licenser för användning i produktion, vilket gör att priset måste övervägas gentemot prestandan vid val av teknik. Även de licenser för operativsystemen som servrarna kör på bidrar med en viss skillnad i kostnad när Windows används istället för Linux. Vissa tekniker kunde endast köras på Windows och andra endast på Linux, vilket därför kan på-verka valet av tekniker till systemet baserat på de kostnaderna.

Under examensarbetet framkom det inga icke-tekniska aspekter som behövde stu-deras.

6 Slutsatser

Målet med detta examensarbete var, som beskrevs i inledningen, att utveckla en ny konnektor, samt att undersöka och ta fram metoder för att på ett effektivt sätt hämta och sammanställa data från en tidsseriedatabas.

Således blev det huvudsakliga målet med examensarbetet att undersöka i vilken grad det gick att förbättra prestandan vid uthämtning och sammanställning av data ur tidsseriedatabaser. Slutsatsen som kunde ställas gentemot målet är att det är möjligt att förbättra prestandan mycket genom användandet av effektiva metoder och tekniker inom olika områden i systemet. För lagring av data presterade en ege-nimplementerad lösning för lokal minneslagring bäst, men saknade viss funktion-alitet såsom persistens. Användandet av förberäknade värden visade sig potentiellt ge en mycket stor prestandaökning, så länge de små kvalitetsförluster som före-kommer är acceptabla. När det före-kommer till dataformat framkom att det idag van-liga formatet JSON är mycket sämre prestandamässigt än binära alternativ såsom Protobuf, vilket var det effektivaste dataformatet av de som utvärderades under examensarbetet.

Användandet av alla effektivaste teknikerna och metoderna tillsammans gav i de tester som utfördes på två olika upplösningar hastighetsförbättringar om 2961 % och 543 %, jämfört med en standardlösning. Slutsatsen är alltså att användandet av rätt tekniker och metoder ger mycket stora prestandavinster.

Till framtida arbeten rekommenderas att undersöka hur tillägg av tekniker, såsom persistens, till en egen minnesdatabas påverkar dess prestanda. Det är också av intresse att undersöka hur databaserna presterar vid större datamängder och i dis-tribuerade konfigurationer. Slutligen bör det undersökas huruvida komprimering av den serialiserade datan som ska skickas kan ge upphov till ännu bättre pre-standa.

Källförteckning

[1] S.-I. Ao, Applied Time Series Analysis and Innovative Computing, Springer, 2010.

[2] A. Bader, ”Comparasion of Time Series Databases,” University of Stuttgart, 2016.

[3] Microsoft, ”Features Supported by the Editions of SQL Server 2014,” Microsoft, 2017. [Online]. Available: https://msdn.microsoft.com/en-us/library/cc645993(v=sql.120).aspx. [Använd 22 mars 2017].

[4] Group, The Open, ”The Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 Edition. (4-16),” 2016.

[5] Microsoft, ”DateTime.Ticks Property,” Microsoft, 2017 . [Online]. Available:

https://msdn.microsoft.com/en-us/library/system.datetime.ticks(v=vs.110).aspx. [Använd 28 mars 2017 ]. [6] P. Esling och C. Agon, ”Time-Series Data Mining,” ACM Comput, 2012.

[7] R. SADRI, C. ZANIOLO, A. ZARKESH och J. ADIBI, ”Expressing and Optimizing Sequence Queries in Database Systems,” ACM Transactions on Database Systems, California, 2004.

[8] A. Iyengar, ”Design and Performance of a General-Purpose Software Cache,” IBM Research, 1998.

[9] L. Li, C. Niu, H. Zheng och J. Wei, ”An Adaptive Caching Mechanism for Web Services,” IEEE, China, 2006.

[10] H. K. Mehta, P. Kanungo och M. Chandwani, ”Distributed database caching for web applications and web services,” ACM, India, 2011.

[11] J. Fernandez, A. Fernandez och J. Pazos, ”Optimizing Web services performance using caching,” IEEE, Spain, 2005.

[12] K. Ma och B. Yang, ”Access-Aware In-memory Data Cache Middleware for Relational Databases,” IEEE, China, 2015.

[13] M.-K. Park, W.-S. Cho, S. Nam, C. Choi, Y.-C. Shin och K.-H. Lee, ”Performance Comparison of Real-time Spatial Data Processing: A Pivot on

In-Memory Data Grid (IMDG) Technology,” ACM, Jeju Island, Republic of Korea, 2015.

[14] P. Chao, D. He, S. Sadiq, K. Zheng och X. Zhou, ”A performance study on large-scale data analytics using disk-based and in-memory database systems,” IEEE, Australia, China, 2017.

[15] K. Maeda, ”Performance evaluation of object serialization libraries in XML, JSON and binary formats,” IEEE, Japan, 2012 .

[16] G. Wang, ”Improving Data Transmission in Web Applications via the Translation between XML and JSON,” IEEE, China, 2011.

[17] B. Lin, Y. Chen, X. Chen och Y. Yu, ”Comparison between JSON and XML in Applications Based on AJAX,” IEEE, China, 2012.

[18] S. Popić, D. Pezer, B. Mrazovac och N. Teslić, ”Performance evaluation of using Protocol Buffers in the Internet of Things communication,” IEEE, Serbia, 2016.

[19] G. Kaur och M. M. Fuad, ”An evaluation of Protocol Buffer,” IEEE, USA, 2010.

[20] K. Varda, ”CAP'N PROTO - Introduction,” Sandstorm, [Online]. Available: https://capnproto.org/index.html. [Använd 31 mars 2017].

[21] B. Sefid-Dashti och S. M. Babamir, ”Toward extending apache thrift open source to alleviate SOAP service consumption,” IEEE, Iran, 2016.

[22] R. Gruchalski, ”JavaScript: binary protocol implementation,” 16 september 2016. [Online]. Available: https://issues.apache.org/jira/browse/THRIFT-2926. [Använd 27 mars 2017].

[23] A. S. Huang, E. Olson och D. C. Moore, ”LCM: Lightweight Communications and Marshalling,” IEEE, USA, Finland, 2010.

[24] E. Olson, D. Moore och A. Huang, ”LCM UDP Multicast Protocol Description,” Lightweight Communications and Marshalling (LCM), [Online]. Available: https://lcm-proj.github.io/udp_multicast_protocol.html. [Använd 27 mars 2017].

[25] The Apache Software Foundation, ”Apache Avro™ 1.8.1 Documentation,” The Apache Software Foundation, 22 maj 2016. [Online]. Available: http://avro.apache.org/docs/1.8.1/. [Använd 31 mars 2017].

[26] S. Furuhashi, ”MessagePack specification,” 21 april 2013. [Online]. Available: https://github.com/msgpack/msgpack/blob/master/spec.md. [Använd 28 april 2017].

[27] A. Sumaray och S. K. Makki, ”A comparison of data serialization formats for optimal efficiency on a mobile platform,” ACM, Malaysia, 2012.

[28] H. Andrade, F. Giaimo, C. Berger och I. Crnkovic, ”Systematic evaluation of three data marshalling approaches for distributed software systems,” ACM, Sweden, 2015.

[29] G. Coulouris, J. Dollimore, T. Kindberg och G. Blair, Distributed Systems Concepts and Design Fifth Edition, London: Pearson Education Limited, 2012.

[30] D. Crane och P. McCarthy, Comet and Reverse Ajax: The Next-Generation Ajax 2.0, New York: Springer-Verlag, 2008.

[31] V. Wang, F. Salim och P. Moskovits, The Definitive Guide to HTML5 WebSocket, New York: Springer Science+Business Media, 2013.

[32] M. Heinrich och M. Gaedke, ”Data Binding for Standard-based Web Application,” ACM, Germany, 2012.

[33] A. Halilovic, ”Formler och tabeller i statistik,” 2 maj 2013. [Online]. Available: http://ingforum.haninge.kth.se/armin/ALLA_KURSER/KURSMATERIAL/ MAT_STAT/TABELLER/FORMLER_TABELLER.pdf. [Använd 10 april 2017].

[34] Microsoft, ”int, bigint, smallint, and tinyint (Transact-SQL),” Microsoft,

[Online]. Available:

https://msdn.microsoft.com/en-us/library/ms187745.aspx. [Använd 23 mars 2017].

[35] Microsoft, ”Caching in .NET Framework Applications,” Microsoft, 2017.

[Online]. Available:

https://msdn.microsoft.com/en-us/library/dd997357(v=vs.110).aspx. [Använd 22 mars 2017].

[36] Microsoft, ”MemoryCache Class,” Microsoft, 2017. [Online]. Available:

https://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache(v=vs.110).aspx. [Använd 22 mars 2017].

[37] Microsoft, ”CacheItemPolicy Class,” Microsoft, 2017. [Online]. Available:

22 mars 2017].

[38] Microsoft, ”MemoryCache.PhysicalMemoryLimit Property,” Microsoft, 2017.

[Online]. Available:

https://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.physicalmemorylimit(v=vs. 110).aspx. [Använd 22 Mars 2017].

[39] Dormando, ”What is Memcached?,” Dormando, 2015. [Online]. Available: https://memcached.org/. [Använd 22 mars 2017].

[40] Dormando, ”About Memcached,” Dormando, 2015. [Online]. Available: https://memcached.org/about.

[41] R. M. Lerner, ”At the forge: memcached,” Linux Journal, vol. 2008, nr 176, 2008.

[42] Hazelcast Inc, ”In-Memory Data Grid,” Hazelcast Inc, 2017. [Online]. Available: https://hazelcast.org/use-cases/data-grid/. [Använd 22 mars 2017].

[43] Hazelcast Inc, ”Caching,” Hazelcast Inc, 2017. [Online]. Available: https://hazelcast.org/use-cases/caching/. [Använd 22 mars 2017].

[44] Hazelcast Inc, ”Hazelcast IMDG .NET Client,” Hazelcast Inc, 2017. [Online]. Available: https://hazelcast.org/clients/net/. [Använd 22 mars 2017].

[45] R. M. Lerner, ”At the forge: Redis,” Linux Journal, vol. 2008, nr 197, 2010. [46] redislabs, ”Data types,” redislabs, 2017. [Online]. Available:

https://redis.io/topics/data-types. [Använd 24 mars 2017]. [47] VoltDB, Using VoltDB v7.1, VoltDB, 2017.

[48] T. Pelkone, S. Frankli, J. Teller, P. Cavallar, Q. Huang, J. Meza och K. Veeraraghavan, ”Gorilla: A Fast, Scalable, In-Memory Time Series Database,” VLDB Endowment, Menlo Park, 2015.

[49] MemSQL Inc. , ”The Real-Time Data Warehouse,” MemSQL Inc. , [Online]. Available: http://www.memsql.com/. [Använd 28 april 2017].

[50] MemSQL Inc., ”MemSQL Documentation,” [Online]. Available: http://docs.memsql.com/docs. [Använd 28 april 2017].

[51] Interactive Reporting, ”INMEMORY.NET Manual,” 2014. [Online]. Available: http://www.interactivereporting.com/irdb/irdb.pdf. [Använd 28 04 2017]. [52] Devrex Labs, ”OrigoDB,” Devrex Labs, [Online]. Available:

http://origodb.com/. [Använd 11 maj 2017].

[53] R. Estrada och I. Ruiz, Big Data SMACK A Guide to Apache Spark, Mesos, Akka, Cassandra, and Kafka, Mexico City: SpringerLink, 2016.

[54] DataStax, Inc, ”Compound keys and clustering,” DataStax, Inc, 9 maj 2017.

[Online]. Available:

http://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_compound_keys_c.html. [Använd 11 maj 2017].

[55] Facebook Inc., ”Beringei,” Facebook Inc., 19 januari 2017. [Online]. Available: https://github.com/facebookincubator/beringei/blob/master/README.md. [Använd 31 mars 2017].

[56] BSON, ”BSON,” BSON, [Online]. Available: http://bsonspec.org/. [Använd 31 mars 2017].

[57] R. Gruchalski, ”Apache Thrift BinaryProtocol for JavaScript,” Gossiperl, 5 januari 2015. [Online]. Available: https://github.com/gossiperl/thrift-js-binary-protocol/blob/master/README.md. [Använd 27 april 2017].

[58] M. Monsch, ”Avsc,” [Online]. Available:

https://github.com/mtth/avsc/blob/master/README.md. [Använd 25 april 2017].

[59] B. Gunnar, J. Enger, G. Englund, J. Grandell och L. Holst, Sannolikhetsteori och statistikteori med tillämpningar, Portland: Studentliteratur, 2005.

Related documents