• Nenhum resultado encontrado

Capítulo 5 – Testes de Carga

5.1 Base de Dados BD1

Na figura seguinte estão representados os valores de tempos obtidos na consulta 1 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Figura 29 - Resultado do Teste de carga utilizando a consulta 1

Na figura seguinte estão representados os valores de tempos obtidos na consulta 3 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Testes de Carga

_______________________________________________________________________________

68

Figura 30 - Resultado do Teste de carga utilizando a consulta 3

5.2 Base de dados BD2

Na figura seguinte estão representados os valores de tempos obtidos na consulta 1 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Figura 31 - Resultado do Teste de carga utilizando a consulta 1

Na figura seguinte estão representados os valores de tempos obtidos na consulta 3 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Testes de Carga _____________________________________________________________________________

Figura 32 - Resultado do Teste de carga utilizando a consulta 3

5.3 Base de dados BD3

Na figura seguinte estão representados os valores de tempos obtidos na consulta 1 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Figura 33 - Resultado do Teste de carga utilizando a consulta 1

Na figura seguinte estão representados os valores de tempos obtidos na consulta 3 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Testes de Carga

_______________________________________________________________________________

70

Figura 34 - Resultado do Teste de carga utilizando a consulta 3

5.4 Base de dados BD4

Na figura seguinte estão representados os valores de tempos obtidos na consulta 1 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Figura 35 - Resultado do Teste de carga utilizando a consulta 1

Na figura seguinte estão representados os valores de tempos obtidos na consulta 3 com utilizadores a aceder concorrentemente à base de dados, nomeadamente, dez, vinte e cinquenta utilizadores.

Testes de Carga _____________________________________________________________________________

Figura 36 - Resultado do Teste de carga utilizando a consulta 3

5.5 Discussão de resultados

Relativamente à consulta um não existem muitas diferenças entre os vários tamanhos de bases de dados, apenas de salientar que o MongoDB na BD4, que é a base de dados maior, obteve melhor desempenho que nas restantes que possuem menos dados, apesar da diferença ser mínima sugere um melhor desempenho com maiores quantidades de dados. Em comparação com o MySQL notam-se diferenças substanciais nas barras dos gráficos mas que em relação ao tempo de execução, a diferença entre estas não é muito relevante, sendo apenas diferenças de décimas.

No que diz respeito à consulta três, que era a consulta mais “pesada”, o MySQL tem um desempenho bastante inferior ao MongoDB, chegando mesmo a diferenças de dezenas de segundos. O facto desta consulta ir a múltiplas tabelas prejudica bastante o desempenho do

MySQL em acessos concorrentes à base de dados. A diferença mais substancial é na BD4,

na qual o MongoDB tem um ótimo desempenho com quantidades elevadas de dados e com o máximo de utilizadores em teste, obtendo mesmo uma diferença de cerca de duzentos segundos de diferença relativamente ao MySQL. Onde o MySQL se aproximou mais do

MongoDB foi na BD2 e BD3, mas ainda assim com diferenças de alguns segundos.

Concluindo, com operações de agregação e com consultas que não necessitem de recorrer a muitas tabelas o MySQL revela um bom desempenho, que apesar de ter sido o melhor desempenho as diferenças para o MongoDB não foram muito elevadas o que revela o

MongoDB como uma boa alternativa. Já na consulta três o MySQL, com o aumento do

Testes de Carga

_______________________________________________________________________________

72

MongoDB. Este por sua vez com a BD4, que é a maior base de dados, possui um ótimo

desempenho, mesmo com o máximo de utilizadores testados a acederem concorrentemente à base de dados, o que o torna bastante atrativo para situações em que com a tecnologia relacional exista a necessidade de consultar um número elevado de tabelas.

Conclusões _____________________________________________________________________________

Capítulo 6 – Conclusões

Neste capítulo são apresentadas as conclusões do trabalho efetuado. Este está dividido em três secções, nomeadamente, as contribuições do trabalho para o setor em estudo, as limitações que foram sentidas e o trabalho futuro a ser realizado.

6.1 Contribuições

As bases de dados NoSql estão cada vez mais presentes nas empresas, sendo vistas como uma alternativa viável para armazenamento de grandes volumes de dados quando a disponibilidade e a tolerância ao particionamento são as características mais importantes. Os objetivos propostos para esta dissertação foram atingidos, tendo-se obtido uma comparação entre as tecnologias relacional e não relacional, bem como entre duas Document Databases (MongoDB e CouchDB).

É evidenciado que a tecnologia não relacional, nomeadamente as Document Databases, possui vantagens significativas nas consultas que não utilizam funções de agregação bem como o facto de serem livres de esquemas, o que as torna numa potente alternativa a ser utilizada pelas empresas.

Relativamente aos testes de carga, o MongoDB obteve melhor desempenho comparativamente ao MySQL na consulta que necessitava de percorrer mais tabelas, sendo que assim, conforme a complexidade dos dados aumenta e mais tabelas, por ventura, necessitarem de ser criadas e posteriormente consultadas, o desempenho do MySQL irá agravar-se, contrariamente ao MongoDB, onde o facto de não necessitar de esquemas se torna bastante vantajoso comparativamente ao MySQL.

A situação de migração da tecnologia relacional para a não relacional deve ser devidamente analisada, pois quanto maior o volume de dados maiores são os custos de migração e, sendo assim, as vantagens devem compensar o investimento.

Importa ainda referir que um excerto da presente dissertação foi aprovado em artigo e apresentado na CAPSI 2015 no ISCTE, contribuindo desta forma para a evidenciação das diferenças entre as Document Databases e o MySQL.

6.2 Dificuldades

Em todos os trabalhos existem limitações e sendo assim este não foi exceção. A primeira limitação foi verificada em termos de carregamento de dados, no qual o dataset possuía bastantes dados inconsistentes pelo que teve de ser devidamente tratado. Era pretendido um

Conclusões

_______________________________________________________________________________

74

algo bastante difícil de ser encontrado.

A segunda limitação identificada foi o facto de se lidar com milhões de registos, o que requeria um servidor potente, pelo que o carregamento foi um processo bastante moroso. A terceira e última limitação identificada foi que para embutir documentos, o facto de estes serem complexos e com bastantes campos, a sua criação através do programa em java foi bastante lenta, sendo que foram gerados documentos de seiscentos mil em seiscentos mil, para este não crashar e parar.

6.3 Trabalho futuro

No desenvolvimento desta dissertação vários caminhos podiam ter sido tomados, os quais identificam possibilidades que ficaram por investigar. Estas oportunidades complementam o trabalho realizado pelo que devem ser ponderadas.

No que diz respeito à escalabilidade, pode ser analisado o desempenho das bases de dados relacionais e não relacionais com os servidores distribuídos por várias máquinas e assim efetuar comparações e verificar se são compensatórias as vantagens das bases de dados

NoSql neste ponto. Nessa comparação podem também ser incluídos testes de carga com

vários utilizadores a aceder simultaneamente à base de dados, quer para consultar ou inserir dados, e verificar como esta se comporta. Também se poderia incluir a análise de desempenho relativamente a updates com os testes de carga referidos anteriormente.

Referências Bibliográficas _____________________________________________________________________________

Referências Bibliográficas

10gen. (2011). MongoDB. Retrieved from http://www.MongoDB.org/

Abadi, D. J., & Madden, S. (2008). Query Execution in Column-Oriented Database Systems.

Massachusetts Institute of Technology.

Abramova, V., Bernardino, J., & Pedro, F. (2014). Experimental Evaluation of NoSql Databases.

International Journal of Database Management Systems (IJDMS), 6(3), 1–16.

Alexandre, J., & Cavique, L. (2013). NoSql no suporte à análise de grande volume de dados. Revista de Ciencias de Computação, 8, 37 – 48. Retrieved from http://repositorioaberto.uab.pt/handle/10400.2/3091

Almeida, R. C. De, & Brito, P. F. De. (2012). Utilização da Classe de Banco de Dados

NOSQL como Solução para Manipulação de Diversas Estruturas de Dados. Palmas.

Anderson, J. C., Lehnardt, J., & Slater, N. (2010). CouchDB: The Definitive Guide. (O. M. Inc., Ed.).

Apache CouchDB. (2011). Retrieved from http://CouchDB.apache.org/

Atzeni, P., Bugiotti, F., & Rossi, L. (2013). Uniform access to NoSql systems. Information Systems, 43, 117–133. doi:10.1016/j.is.2013.05.002

Baltzan, P., & Phillips, A. (2012). Business driven information systems (3a edição.). Basso, C., & Padua, R. de. (2014). O Uso de Big Data nas Universidades. Seminário de Iniciação

Científica, 94. Retrieved from

http://editora.unoesc.edu.br/index.php/siepe/article/view/5567

Bell, C., Kindahl, M., & Thalmann, L. (2010). MySQL High Availability. (A. Oram, Ed.) (1o edition.). O’Reilly Media, Inc.

Bock, D. B., & Schrage, J. F. (2002). Denormalization guidelines for base and transaction tables.

ACM SIGCSE Bulletin, 34, 129. doi:10.1145/820127.820184

Bonnet, L., Laurent, A., Sala, M., Laurent, B., & Sicard, N. (2011). Reduce, you say: What

NoSql can do for data aggregation and BI in large repositories. Proceedings - International

Workshop on Database and Expert Systems Applications, DEXA, 483–488. doi:10.1109/DEXA.2011.71

Brewer, E. (2000). Towards Robust Distributed Systems. In Proceedings of the nineteenth annual ACM symposium on Principles of distributed computing (Vol. 19, pp. 1–12). doi:10.1145/343477.343502

Referências Bibliográficas

_______________________________________________________________________________

76

Carniel, A. C., Sá, A. D. A., Henrique, V., Brisighello, P., Ribeiro, M. X., Bueno, R., Ciferri, R. R. (2012). Análise Experimental de Bases de Dados Relacionais e NoSql no Processamento de Consultas sobre Data Warehouse. Brazilian Symposium on Databases -

Short Paper, d, 113–120. Retrieved from

http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_shp_15.pdf

Castro, J., & Batista, E. (2013). Comparação entre Banco de Dados Relacionais e Não- Relacionais – MySQL x NoSql. Revista Network Technologies Faculdades Network – Revista Da Faculdade de Sistema de Informação, Ano 7, No, 111.

Cattell, R. (2011). Scalable SQL and NoSql data stores. ACM SIGMOD Record, 39(4), 12. doi:10.1145/1978915.1978919

Clarck, B. (2009). NoSql: If Only It Was That Easy. Retrieved February 11, 2015, from https://markedaspertinent.wordpress.com/2009/08/04/NoSql-if-only-it-was-that-easy/ Coronel, C., Morris, S., & Rob, P. (2013). Database Systems: Design, Implementation and Management. Management (p. 692).

D., M., & Kelly, A. (2013). Making Sense of NoSql: A guide for managers and the rest of us.

Date, C. J. (2004). Introdução a Sistemas de Bancos de Dados. (E. Campus, Ed.) (8a edição.).

Dean, J., & Ghemawat, S. (2004). MapReduce: Simplied Data Processing on Large Clusters.

Proceedings of 6th Symposium on Operating Systems Design and Implementation, 137– 149. doi:10.1145/1327452.1327492

DeCandia, G., Hastorun, D., Jampani, M., Kakulapati, G., Lakshman, A., Pilchin, A., Vogels, W. (2007). Dynamo : Amazon’s Highly Available Key-value Store. ACM SIGOPS Operating Systems Review, 41, 205–220. doi:10.1145/1323293.1294281

Diana, M. De, & Gerosa, M. A. (2010). NoSql na Web 2.0: Um estudo comparativo de bancos Não-Relacionais para Armazenamento de Dados na Web 2.0. WTDBD 2010-IX Workshop de Teses E Dissertações em Bancos de Dados. Retrieved from http://www.lbd.dcc.ufmg.br/colecoes/wtdbd/2010/sbbd_wtd_12.pdf

Dimitrov, M. (2010). NoSql Databases. Ontotext. Retrieved from http://pt.slideshare.net/marin_dimitrov/NoSql-databases-3584443

Ferreira, L. (2012). Bridging the gap between SQL and NoSql. Universidade do Minho. Forbes, D. (2010). Getting Real about NoSql and the SQL-Isn’t-Scalable Lie. Retrieved from https://dennisforbes.ca/index.php/2010/03/02/getting-real-about-NoSql-and-the-Sql-isnt- scalable-lie/

Frozza, A. A., Schuch, E. M., Ohana, G., & Catarina, B. (2011). POSTGRESQL X

Referências Bibliográficas _____________________________________________________________________________

Gilbert, S., & Lynch, N. (2002). Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, 33, 51. doi:10.1145/564585.564601

Grolinger, K., Higashino, W. a, Tiwari, A., & Capretz, M. A. (2013). Data management in cloud environments: NoSql and NewSQL data stores. Journal of Cloud Computing: Advances, Systems and Applications, 2, 22. doi:10.1186/2192-113X-2-22

Guimarães, T., Nakai, A., & Vieira, L. (2013). Banco de dados NoSql para integração de bases de dados de gases de efeito estufa. Mostra de Estagiários e Bolsistas da Embrapa Informática Agropecuária, 9., 2013, Campinas. Brasília, DF: Embrapa, 2013. Retrieved from http://www.alice.cnptia.embrapa.br/bitstream/doc/981973/1/NoSql.pdf

Han, J., Haihong, E., Le, G., & Du, J. (2011). Survey on NoSql database. Proceedings - 2011 6th International Conference on Pervasive Computing and Applications, ICPCA 2011, 363– 366. doi:10.1109/ICPCA.2011.6106531

Hecht, R., & Jablonski, S. (2011). NoSql evaluation: A use case oriented survey. 2011 International Conference on Cloud and Service Computing, 336–341. doi:10.1109/CSC.2011.6138544

Imielinski, T., & Lipski, W. (1982). A systematic approach to relational database. In ACM SIGMOD international conference on Management of data (pp. 8–14). Retrieved from http://dl.acm.org/citation.cfm?id=582356&dl=ACM&coll=DL&CFID=478886163&CFT OKE N=69157666

Indrawan-Santiago, M. (2012). Database research: Are we at a crossroad? Reflection on

NoSql. Proceedings of the 2012 15th International Conference on Network-Based

Information Systems, NBIS 2012, 45–51. doi:10.1109/NBiS.2012.95

Jacobs, A. (2009). The Pathologies of Big data. ACM Queue, 7(6). Retrieved from http://queue.acm.org/detail.cfm?id=1563874

James Manyika, Michael Chui, Brad Brown, Jacques Bughin, Richard Dobbs, Charles Roxburgh, A. H. B. (2011). Big data: The next frontier for innovation, competition, and productivity. McKinsey Global Institute, (June), 156. doi:10.1080/01443610903114527 Leavitt, N. (2010). Will NoSql Databases Live Up to Their Promise? Computer, 43(2), 12– 14. doi:10.1109/MC.2010.58

Lee, K. K. Y., Tang, W. C., & Choi, K. S. (2013). Alternatives to relational database: Comparison of NoSql and XML approaches for clinical data storage. Computer Methods and Programs in Biomedicine, 110(1), 99–109. doi:10.1016/j.cmpb.2012.10.018

Liu, Z., He, B., Hsiao, H., & Chen, Y. (2011). Efficient and scalable data evolution with column oriented databases. … Conference on Extending Database, 105 – 116. doi:10.1145/1951365.1951380

Lóscio, B. F., Oliveira, H. R. De, & Pontes, J. C. D. S. (2011). NoSql no desenvolvimento de aplicações Web colaborativas, 1 – 17. Retrieved from

Referências Bibliográficas

_______________________________________________________________________________

78

http://www.addlabs.uff.br/sbsc_site/SBSC2011_NoSql.pdf Mattar, F. N. (1994). Pesquisa de Marketing.

MongoDB. (2011a). BSON. Retrieved February 11, 2015, from http://blog.MongoDB.org/post/114440717/bson

MongoDB. (2011b). Data Models. Retrieved February 11, 2015, from http://docs.MongoDB.org/manual/data-modeling/

MongoDB. (2011c). ObjectId. Retrieved February 11, 2015, from http://docs.MongoDB.org/manual/reference/object-id/

MongoDB. (2011d). Replication. Retrieved February 11, 2015, from http://docs.MongoDB.org/manual/replication/

MongoDB. (2011e). SQL to MongoDB Mapping Chart. Retrieved February 11, 2015, from

http://docs.MongoDB.org/manual/reference/Sql-comparison/

Moniruzzaman, A., & Hossain, S. (2013). NoSql database: New era of databases for Big

data analytics-classification, characteristics and comparison. arXiv Preprint arXiv:1307.0191, 6(4), 1–14. Retrieved from http://arxiv.org/abs/1307.0191

Parikh, J. (2013). Facebook Newsroom : A new Datacenter for Iowa. Retrieved February 11, 2015, from http://newsroom.fb.com/

Piovesan, A., & Temporini, E. R. (1995). Pesquisa exploratória: procedimento metodológico para o estudo de fatores humanos no campo da saúde pública. Revista de Saúde Pública, 29 (011), 318 – 325. doi:10.1590/S0034-89101995000400010

Pozzani, G. (2013). Introduction to NOSQL. NoSql Seminar. NoSql Seminar. Retrieved from http://www.cs.tut.fi/~tjm/seminars/NoSql2012/NoSql-Intro.pdf

Pritchett, D. (2008). Base: an Acid Alternative. Queue, 6(June 2008), 48–55. doi:10.1145/1394127.1394128

Purcell, B. (2013). The emergence of “Big data” technology and analytics. Journal of Technology Research, 1 – 7.

Queiroz, G. R. De, Miguel, A., Monteiro, V., & Câmara, G. (2013). Bancos de Dados Geográficos e Sistemas NoSql : Onde Estamos e para Onde vamos, Geographic Databases and NoSql : Accomplishments and Future Directions. Revista Brasileira de Cartografia, 479–492.

Redmond, E., & Wilson, J. R. (2012). Seven Databases in Seven Weeks. North (p. 347). Révillion, A. S. P. (2001). A Utilização de Pesquisas Exploratórias na Área de Marketing. XXV

Encontro Da ANPAD, 1 – 15.

Referências Bibliográficas _____________________________________________________________________________

Metodologia científica. doi:10.1038/140260c0

Rybiński, H. (1987). On First-Order-Logic Databases. ACM Transactions on Database Systems.

Retrieved from http://dl.acm.org/citation.cfm?id=27630 Sadalage, P. J., & Fowler, M. (2012). NoSql Distilled (p. 192).

Sampieri, Collado, & Lucio. (1991). Metodología de la investigación. Mexico.

Schram, A., & Anderson, K. M. (2012). MySQL to NoSql. Proceedings of the 3rd Annual Conference on Systems, Programming, and Applications: Software for Humanity - SPLASH ’12, 191. doi:10.1145/2384716.2384773

Scofield, B. (2009). NoSql Misconceptions. Retrieved from http://viget.com/extend/NoSql- misconceptions

Shawrtz, B., Zaitsev, P., & Tkachenco, V. (2012). High Performance MySQL. (A. Oram, Ed.) (3ord Editi.). O’Reilly Media, Inc.

Silberschartz, A., Korth, H., & Sudarshan, S. (1999). Sistemas de Banco de Dados.

Silva, C. A. R. F. O. Da. (2011). Data modeling with NoSql : how, when and why. Faculdade de Engenharia da Universidade do Porto. Retrieved from http://hdl.handle.net/10216/61586 Sousa, P. (2010). O teorema CAP. Retrieved February 26, 2015, from https://unrealps.wordpress.com/2010/12/28/o-teorema-cap/

Stonebraker, M. (2009). The “NoSql” Discussion has Nothing to Do With SQL. Retrieved from http://cacm.acm.org/blogs/blog-cacm/50678-the-NoSql-discussion-has-nothing-to- do-with- Sql/fulltext

Stonebraker, M. (2010). SQL databases v. NoSql databases. Communications of the ACM, 53(4), 10. doi:10.1145/1721654.1721659

Stonebraker, M. (2011). Stonebraker on NoSql and enterprises. Communications of the ACM, 54(8), 10. doi:10.1145/1978542.1978546

Strauch, C. (2010). NoSql Databases (p. 120). Stuttgart. Tiwari, S. (2011). Professional

NoSql.

Tauro, J. M., Aravindh, S., Shreeharsha, A. B. (2012). Comparative Study of the New Generation, Agile, Scalable, High Performance NOSQL Databases. International Journal of Computer Applications, 48(20), 1–4. doi:10.5120/7461-0336

Toth, R. (2012). Abordagem NoSql – uma real alternativa. Dcomp.sor.ufscar.br, 1–6. Retrieved from http://www.dcomp.sor.ufscar.br/verdi/topicosCloud/NoSql_artigo.pdf Toth, R. M. (2011). Abordagem NoSql- Uma real Alternativa (pp. 1 – 6). Sorocaba. Retrieved from http://www2.sor.ufscar.br/verdi/topicosCloud/NoSql_artigo.pdf

Referências Bibliográficas

_______________________________________________________________________________

80

conceitos, ferramentas, linguagens e estudos de casos no contexto de Big data. Simpósio Brasileiro DE Banco de Dados, (1), 1 – 30. Retrieved from http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf

Vogels, W. (2009). Eventually Consistent. Communications of the Acm, 52, 14. doi:10.1145/1466443.1466448

Warden, P. (2011). Big data Glossary. (M. Loukides, Ed.) (p. 56). O’Reilly Media, Inc. White, T. (2012). Hadoop: The definitive guide. Online (Vol. 54, p. 258). doi:citeulike- article- id:4882841

Anexos _____________________________________________________________________________

Anexos _____________________________________________________________________________

Anexo A

Extrato de Código 1 package dissertacao.Classes; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * * @author Gon */

public class Airplane { public String tailnum; public String issue_data; public String year;

public String status; public String airline; public String engine_type; public String type;

public String aircraft_type; public String model;

public String manufacturer; public Object id;

// get & set @Override

public String toString() { String s = "{" + "'tailnum':'" + tailnum + "'" + ", 'issue_data':'" + issue_data + "'" + ", 'year_airplane':" + year + ", 'status':'" + status + "'" + ", 'airline':'" + airline + "'" + ", 'engine_type':'" + engine_type + "'" + ", 'type':'" + type + "'" + ", 'aircraft_type':'" + aircraft_type + "'" + ", 'model':'" + model + "'" + ", 'manufacturer':'" + manufacturer + "'" + "}"; return s; } package dissertacao.Classes; /**

Anexos _______________________________________________________________________________ 84 * * @author Gon */

public class Airport {

public Object idAirport; public String airport; public Object city; public Object state; public Object country; public Object latitude; public Object longitude; public Object id;

// get & set @Override

public String toString() { String s = "{" + "'idAirport':'" + idAirport + "'" + ", 'airport':'" + airport + "'" + ", 'city':'" + city + "'" + ", 'state':'" + state + "'" + ", 'country':'" + country + "'" + ", 'latitude':'" + latitude + "'" + ", 'longitude':'" + longitude + "'" + "}"; return s; } } package dissertacao.Classes; /** * * @author Gon */

public class Flight {

public Object id_flight; public Object month; public Object year;

public Object dayofmonth; public Object dayofweek; public Object deptime; public Object crsdeptime; public Object arrtime; public Object crsarrtime;

Anexos _____________________________________________________________________________

public Object flightnum; public Object id;

public Object tailnum;

public Object actualelapsedtime; public Object crselapsedtime; public Object airtime;

public Object arrdelay; public Object depdeplay; public Object origin; public Object dest; public Object distance; public Object taxiin; public Object taxiout; public Object cancelled; public Object diverted; public Airplane airplane; public Airport airport;

// get & set @Override

public String toString() { return "Flight{" + " _id='" + id + "'" + ", id_flight='" + id_flight.toString() + "'" + ", month='" + month.toString() + "'" + ", year='" + year + "'" + ", dayofmonth='" + dayofmonth + "'" + ", dayofweek='" + dayofweek + "'" + ", deptime='" + deptime + "'" + ", crsdeptime='" + crsdeptime + "'" + ", arrtime='" + arrtime + "'" + ", crsarrtime='" + crsarrtime + "'" + ", arrdelay='" + arrdelay + "'" + ", depdeplay='" + depdeplay + "'" + ", airtime='" + airtime + "'" + ", actualelapsedtime='" + actualelapsedtime + "'" + ", crselapsedtime='" + crselapsedtime + "'" + ", flightnum='" + flightnum + "'" + ", tailnum='" + tailnum + "'" + ", origin='" + origin + "'" + ", dest='" + dest + "'" + ", distance='" + distance + "'" + ", taxiin='" + taxiin + "'" + ", taxiout='" + taxiout.toString() + "'" + ", cancelled='" + cancelled + "'" + ", diverted='" + diverted + "'" + ", airport=" + airport.toString() + ", airplane=" + airplane.toString() +

Anexos _______________________________________________________________________________ 86 '}'; } } Extrato de código 2 package dissertacao; import com.MongoDB.DB; import com.MongoDB.MongoClient; import java.net.UnknownHostException; /** * * @author Gon */ class MongoConnection {

private static final String HOST = "127.0.0.1"; private static final int PORT = 27017;

private static final String db_name = "tese4";

private static MongoConnection uniqInstance; private static int mongoInstance = 1;

private MongoClient mongo; private DB db;

private MongoConnection(){

// contrutor private para ser usado pela variavel criada acima

}

public static synchronized MongoConnection getInstance() {

if(uniqInstance == null) {

uniqInstance = new MongoConnection(); }

return uniqInstance; }

// garante um unico objeto mongo public DB getDB()

{

if(mongo == null) {

try{

mongo = new MongoClient(HOST, PORT); db = mongo.getDB(db_name);

Anexos _____________________________________________________________________________ mongoInstance++); } catch(UnknownError e) { e.printStackTrace(); } } return db; } } Extrato de código 3 package dissertacao; import com.MongoDB.DBCollection; import com.MongoDB.DBCursor; import com.MongoDB.DBObject; import dissertacao.Classes.AirplaneConverter; import dissertacao.Classes.Flight; import java.util.ArrayList; import java.util.List; /** * * @author Gon */

public class FlightDao { private DBCollection db; public FlightDao() { this.db = MongoConnection.getInstance().getDB().getCollection("Flight" ); System.out.println(db); }

public List<Flight> findFlight(DBObject dbo) {

ArrayList<Flight> avioes = new ArrayList<Flight>();

DBCursor cursor = db.find(dbo); long i = 0; while (cursor.hasNext()){ if(i > 40800000 && i < 41400001) { avioes.add(AirplaneConverter.converterParaFlight(cursor.next ())); } else if(i > 41400001)

Anexos _______________________________________________________________________________ 88 { System.out.println("brekou"); break; } else { cursor.next(); } i += 1; } return avioes; } } package dissertacao; import com.MongoDB.DBCollection; import com.MongoDB.connection.Connection; import com.MongoDB.DBCursor; import com.MongoDB.DBObject; import com.MongoDB.Mongo; import dissertacao.Classes.Airplane; import dissertacao.Classes.AirplaneConverter; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * * @author Gon */

public class AirplaneDao implements IAirplaneDao<Airplane>{ private DBCollection db; public AirplaneDao() { this.db = MongoConnection.getInstance().getDB().getCollection("Airplan e"); System.out.println(db); }

public List<Airplane> findAirplanes(DBObject dbo) {

Documentos relacionados