Endringsframlegg til 1. innstilling
Hovudtema 4 Presentasjon av kyrkjeårstidene og tekstane Advent
Depois de concluirmos o estudo sobre a escalabilidade e redundância, era importante estudar com mais detalhe o balanceamento, de forma a que o Mongo DB detete que a BD se encontra desequilibrada e, de forma automática, correr o processo do balancer e distribuir os chunks de forma uniforme pelos diferentes shards que compõe a BD.
58
59
Bibliografia
1. Database. Wikipédia. [Online] https://en.wikipedia.org/wiki/Database. 2. MongoDB For Giant Ideas. [Online] https://www.mongodb.com.
3. Nosql database: New era of databases for big data analytics-classification, characteristics
and comparison. Moniruzzaman , A e Hossain, Syed . 2013, International Journal of Database
Theory and Application, Vol. 6.
4. Parallel and Distributed Databases. pp. 726-763.
5. NoSQL evaluation: A use case oriented survey. Hecht, Robin e Jablonski, Stefan. s.l. : IEEE, 2011. In Cloud and Service Computing (CSC), 2011 International Conference on. pp. 336-341.
6. Rezende, Ricardo. Normalização e desnormalização de dados. DEVMEDIA. [Online] 2012. https://www.devmedia.com.br/normalizacao-e-desnormalizacao-de-dados/24345.
7. Type of NOSQL databases and its comparison with relational databases. Nayak, Ameya, Poriya, Anil e Poojary, Dikshay . Março de 2013, International Journal of Applied Information Systems, Vol. 5, pp. 16-19.
8. NoSQL systems for big data management. Gudivada, Venkat N, Rao, Dhana e Raghavan, Vijay V. s.l. : IEEE, 2014. In Services (SERVICES), 2014 IEEE World Congress on. pp. 190- 197.
9. Scalable SQL and NoSQL data stores. Cattell, Rick. s.l. : York, ACM New, Dezembro de 2010, Acm Sigmod Record, Vol. 39, pp. 12-27.
10. Carzolio, Juan. A Guide to Consistent Hashing. Toptal. [Online] https://www.toptal.com/big-data/consistent-hashing.
11. CloudBasic, Inc. Synchronous vs Asynchronous Replication. CloudBasic. [Online] 1 de Maio de 2016. http://cloudbasic.net/white-papers/synchronous-vs-asynchronous-replication/.
12. Handling big data using NoSQL. Bhogal, Jagdev e Choksi, Imran . s.l. : IEEE, 2015. In Advanced Information Networking and Applications Workshops (WAINA), 2015 IEEE 29th International Conference on. pp. 393-398.
13. Robinson, Henry. CAP Confusion: Problems with ‘partition tolerance’. Cloudera
Engineering Blog. [Online] 26 de Abril de 2010. http://blog.cloudera.com/blog/2010/04/cap-
confusion-problems-with-partition-tolerance/.
14. A performance comparison of SQL and NoSQL databases. Li, Yishan e Manoharan, Sathiamoorthy . s.l. : IEEE, 2013. Communications, computers and signal processing (PACRIM), 2013 IEEE pacific rim conference on. pp. 15-19.
60
15. NoSQL database systems: a survey and decision guidance. Gessert, Felix , et al. s.l. : SpringerLink, 2017, Computer Science-Research and Development, Vol. 32, pp. 353-365.
16. NoSQL databases. Strauch, Christof . 2011, Lecture Notes, Stuttgart Media University, Vol. 20.
17. CouchDB Relax. [Online] http://couchdb.apache.org/.
18. Survey on NoSQL database. Han, Jing , et al. s.l. : IEEE, 2011. In Pervasive Computing and Applications (ICPCA), 2011 6th International Conference on. pp. 363-366.
19. AWS. [Online] https://aws.amazon.com/pt/dynamodb/.
20. Apache Cassandra. Apache Cassandra. [Online] http://cassandra.apache.org/.
21. Anderson, J. Chris, Lehnardt, Jan e Slater, Noah. CouchDB: The Definitive Guide: Time
to Relax. s.l. : O'Reilly Media, Inc., 2010. pp. 166-167.
22. Rouse, Margaret. Failover. TechTarget. [Online] Setembro de 2005. https://searchstorage.techtarget.com/definition/failover.
23. Neo4j. [Online] https://neo4j.com/.
24. An overview of graph databases. Shimpi, Darshana e Chaudhari, Sangita . 2012. International Conference in Recent Trends in Information Technology and Computer Science (ICRTITCS). pp. 16-22.
25. Amador, Gonçalo e Alexandre, Ricardo. Sistemas Distribuidos e Tolerancia a Falhas. [Online] http://www.di.ubi.pt/~pprata/sdtf/Ti_DBdistribuidasGoncaloRicardo.pdf.
26. Kolonko , Kamil . Performance comparison of the most popular relational and non- relational database management systems. DiVa. [Online] 23 de 04 de 2018. http://www.diva- portal.org/smash/record.jsf?pid=diva2%3A1199667&dswid=-337.
27. Kobellarz, Jordan. #6 MongoDB - Replicação. [Online] 9 de Agosto de 2015. http://jordankobellarz.github.io/mongodb/2015/08/09/mongodb-replicacao.html.
28. Performance Evaluation of NoSQL Databases: A Case Study. Klein, John, et al. Austin, Texas, USA : ACM, 2015.
29. Análise de Desempenho do MongoDB. Dourado Neto , Aloísio , et al. Lisbon, ortugal : IEEE, 2017.
30. A Study on Data Input and Output Performance Comparison of MongoDB and
PostgreSQL in the Big Data Environment. Min-Gyue Jung, et al. [ed.] IEEE. 2015. 2015 8th
61
Anexos
62
Apêndice A – 1ª Exp. Escalabilidade: experiência 1.1
Para 100.000 registos.
Figura A.1: Distribuição dos dados pelos shards para 100.000 registos.
Pelo gráfico da temperatura, Fig.A.2, verifica-se que houve mais dados enviados com valores de temperatura 13 e 19, logo vai haver mais dados no shard 0 e no shard 2 (Fig.A.1).
63
Figura A.3: Dados registados no shard 0.
64
Figura A.5: Dados registados no shard 2.
Para 500.000 registos.
Figura A.6: Distribuição dos dados pelos shards para 500.000 registos.
Pelo gráfico da temperatura, Fig.A.7, verifica-se que houve mais dados enviados com valores de temperatura 13 e 19, logo vai haver mais dados no shard 0 e no shard 2 (Fig. A.6).
65
Figura A.7:Gráfico que representa a temperatura dos dados enviados pelo sensor.
66
Figura A.9:Dados registados no shard 1.
67
Para 1.000.000 de registos.
Figura A.11: Distribuição dos dados pelos shards para 1.000.000 registos.
Pelo gráfico da temperatura, Fig.A.12, verifica-se que houve mais dados enviados com valor de temperatura 16, logo vai haver mais dados no shard 0 (Fig. A.11).
68
Figura A.13:Dados registados no shard 0.
69
Para 5.000.000 registos.
Figura A.15: Distribuição dos dados pelos shards para 5.000.000 registos.
Pelos gráficos da temperatura, Fig. A.16 e Fig. A.17, verifica-se que houve mais dados enviados com valor de temperatura 19 e 18, logo vai haver mais dados no shard 0 (Fig. A.11). De seguida, os valores descem para 13 e, depois, sobem para 17. Por esta razão, a percentagem de dados registados nos shards 1 e 2 é muito semelhante.
70
Figura A.17:Gráfico que representa a temperatura dos dados enviados pelo sensor.
71
Figura A.19: Dados registados no shard 1.
Figura A.20:Dados registados no shard 2.
72
Figura A.21:Distribuição dos dados pelos shards para 7.000.000 registos.
Pelos gráficos da temperatura (Fig.A.22, Fig. A.23 e Fig. A.24), verifica-se que os dados enviados pelo sensor têm maioritariamente valores de temperatura 20, 19 e 14. Como os diferentes valores foram registados nos shards em quantidades semelhantes, a sua distribuição vai ser quase uniforme, como se pode verificar na Fig. A.21.
73
Figura A.23:
Gráfico que representa a temperatura dos dados enviados pelo sensor.
74
Figura A.25:Dados registados no shard 0.
75
Figura A.27:Dados registados no shard 2.
76
Apêndice B – 1ª Exp. Escalabilidade: experiência 1.2
Para 100.000 registos.
Figura B.1:Distribuição dos dados pelos shards para 100.000 registos.
Para 500.000 registos.
77
Para 1.000.000 registos.
Figura B.3: Distribuição dos dados pelos shards para 1.000.000 registos.
Para 5.000.000 registos.
78
Estado dos shards, onde se consegue ver como os dados são distribuídos pelos shards através da variável “_id” (Fig. B.5 e Fig. B.6).
Figura B.5: Estado dos shards (função sh.status()).
Figura B.6: Estado dos shards (função sh.status()).
79
Figura B.7: Distribuição dos dados pelos shards para 7.000.000 registos.
80
Apêndice C – 1ª Exp. Escalabilidade: experiência 1.3
Para 100.000 registos.
Figura C.1: Distribuição dos dados pelos shards para 100.000 registos.
81
Figura C.3:Configuração dos shards com as respetivas tags (sensor.dados2).
82
Figura C.5:Dados registados no shard 0.
83
Figura C.7:Dados registados no shard 2.
Para 500.000 registos.
84
Figura C.9: Gráfico que representa a humidade dos dados enviados pelo sensor.
85
Figura C.11:Dados registados no shard 0.
86
Figura C.13:Dados registados no shard 2.
Para 1.000.000 registos.
87
Figura C.15: Gráfico que representa a humidade dos dados enviados pelo sensor.
88
Figura C.17:Configuração dos shards com as respetivas tags (sensor.dados5).
89
Figura C.19:Dados registados no shard 1.
Figura C.20: Dados registados no shard 2.
90
Figura C.21:Distribuição dos dados pelos shards para 5.000.000 registos.
91
Figura C.23:Gráfico que representa a humidade dos dados enviados pelo sensor.
Figura C.24:
Gráfico que representa a humidade dos dados enviados pelo sensor.
92
Figura C.25:Gráfico que representa a humidade dos dados enviados pelo sensor.
93
Figura C.27:Dados registados no shard 0.
94
Figura C.29:Dados registados no shard 2.
Para 7.000.000 registos.
95
Figura C.31:Gráfico que representa a humidade dos dados enviados pelo sensor.
96
Figura C.33:
Gráfico que representa a humidade dos dados enviados pelo sensor.
97
Figura C.35:Configuração dos shards com as respetivas tags (sensor.dados9).
98
Figura C.37:Dados registados no shard 1.
Figura C.38:Dados registados no shard 2.
99
Apêndice D – 1ª Exp. Redundância
1.1 Com Settings padrão.
Figura D.1: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura D.2: Resultado da quantidade de dados no shard, depois do envio de 500.000 registos.
100
Figura D.4: Resultado da quantidade de dados no shard, depois do envio de 5.000.000 registos.
Figura D.5: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
2.1 Com settings.catchUpTimeoutMillis: 2000 (2 segundos).
101
Figura D.7: Resultado da quantidade de dados no shard, depois do envio de 500.000 registos.
Figura D.8: Resultado da quantidade de dados no shard, depois do envio de 1.000.000 registos.
102
Figura D.10: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
2.2 Com settings.catchUpTimeoutMillis: (4000) 4 segundos.
Figura D.16: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura D.17: Resultado da quantidade de dados no shard, depois do envio de 500.000 registos.
103
Figura D.19: Resultado da quantidade de dados no shard, depois do envio de 5.000.000 registos.
Figura D.20: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
3.1 Com:
• settings.heartbeatIntervalMillis: (4000) 4 segundos; • settings.electionTimeoutMillis : (20000) 20 segundos.
Figura D.21: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
104
Figura D.23: Resultado da quantidade de dados no shard, depois do envio de 1.000.000 registos.
Figura D.24: Resultado da quantidade de dados no shard, depois do envio de 5.000.000 registos.
105
3.2 Com:
• settings.heartbeatIntervalMillis: (1000) 1 segundos; • settings.electionTimeoutMillis : (5000) 5 segundos.
Figura D.26: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura D.27: Resultado da quantidade de dados no shard, depois do envio de 500.000 registos.
106
Figura D.29: Resultado da quantidade de dados no shard, depois do envio de 5.000.000 registos.
Figura D.30: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
3.3 Com:
• settings.heartbeatIntervalMillis: (6000) 6 segundos; • settings.electionTimeoutMillis : (30000) 30 segundos.
107
Figura D.32: Resultado da quantidade de dados no shard, depois do envio de 500.000 registos.
Figura D.33: Resultado da quantidade de dados no shard, depois do envio de 1.000.000 registos.
108
Figura D.35: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
109
Apêndice E – 2ª Exp. Redundância
1.1 Com Settings padrão.
Figura E.1: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura E.2: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
2.1 Com settings.catchUpTimeoutMillis: 2000 (2 segundos).
110
Figura E.4: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
2.2 Com settings.catchUpTimeoutMillis: (4000) 4 segundos.
Figura E.5: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
111
3.1 Com:
• settings.heartbeatIntervalMillis: (4000) 4 segundos; • settings.electionTimeoutMillis : (20000) 20 segundos.
Figura E.7: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura E.8: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
3.2 Com:
• settings.heartbeatIntervalMillis: (1000) 1 segundos; • settings.electionTimeoutMillis : (5000) 5 segundos.
112
Figura E.10: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.
3.3 Com:
• settings.heartbeatIntervalMillis: (6000) 6 segundos; • settings.electionTimeoutMillis : (30000) 30 segundos.
Figura E.11: Resultado da quantidade de dados no shard, depois do envio de 100.000 registos.
Figura E.12: Resultado da quantidade de dados no shard, depois do envio de 7.000.000 registos.