Você está na página 1de 7

Sistema para gerenciamento de pequeno e mdio negcio: uma perspectiva sob a modelagem NoSQL Management system for small

and medium business: a perspective on modeling NoSQL


Guedes, Murilo; Graduando; Faculdade de Tecnologia de Cruzeiro mguedes1993@outlook.com Magalhes, Ana Lcia; Doutorado; Pontifcia Universidade Catlica de So Paulo almchle@gmail.com Duque, Jos Walmir Gonalves; Mestrado; Instituto Tecnolgico de Aeronutica walmirduque@yahoo.com.br Resumo Os Bancos de Dados so uma ferramenta h muito indispensveis, porm, as necessidades atuais demandam uma nova abordagem. Essa necessidade foi suprida com a criao de novo tipo de Banco de Dados, o chamado NoSQL que no utiliza a linguagem SQL, linguagem base dos SGBDs Relacionais. O trabalho tem como foco principal a modelagem NoSQL, mais precisamente o modelo orientado a colunas presente no SGBD NoSQL Cassandra, sob a perspectiva da criao de um prottipo para gerenciamento de um ponto comercial, negcio de pequeno e mdio porte, desenvolvido na linguagem de programao orientada a objetos e componentes C#. Palavras-chave: Banco de Dados; NoSQL; Modelagem de Dados. Abstract Databases are a very essential tool, but current needs require a new approach. This need was met by the creation of a new type of database, called NoSQL does not use the SQL language, language based Relational DBMSs. The work has as main focus, modeling NoSQL, specifically oriented model columns on DBMS NoSQL Cassandra, from the perspective of creating a prototype for managing a commercial property, business, small and medium size developed in language of object-oriented and components-oriented programming C#. Keywords: Database; NoSQL; Data Modeling. Introduo Os SGBDs relacionais, quando se vulgarizaram nos anos 80, representaram um avano importante em facilidade de organizao e programao, mas os bancos de dados modernos manipulam grande volume e variedade de dados e muitas vezes precisam de uma velocidade maior que aquela oferecida pelo modelo relacional. Megacorporaes como Google e Facebook utilizam hoje os Banco de Dados No-Relacionais, chamados NoSQL. Este trabalho tem como objetivo o desenvolvimento de um sistema de gerenciamento para um ponto comercial apoiado na linguagem de programao C# e no SGBD NoSQL Cassandra, orientado a colunas e escolhido entre outros modelos. A utilizao do SGBD Cassandra

relevante pelo fato de ser livre e de cdigo aberto - no envolve custos de utilizao e comercializao, o que torna o sistema mais acessvel a pequenas empresas. Microsoft Windows O sistema operacional uma parte importante a se considerar durante o desenvolvimento de um software. necessrio saber qual mercado se pretende atingir, bem como o sistema operacional mais utilizado, por isso, a plataforma escolhida para dar suporte ao prottipo de sistema deste trabalho o Microsoft Windows. Embora existam outros dois grandes sistemas operacionais utilizados hoje, como o Mac OS e o Linux, o Microsoft Windows detm uma larga fatia de mercado. De acordo com o site w3schools.com, em julho de 2013 as mais recentes verses do sistema da Microsoft detinham 82,8% de utilizao de mercado, enquanto os outros dois sistemas apresentavam apenas um total somado de 13,8%. Esses dados se tornam interessantes quando se pretende comercializar um software. A predileo do sistema operacional da Microsoft no apenas interessante por deter importante fatia de mercado, mas por apresentar, tambm, uma gama de aplicativos maior que os outros sistemas operacionais, principalmente a ferramenta Microsoft Visual Studio 2012, cujo uso para a programao na linguagem C# relevante. Linguagem de Programao C# A escolha da linguagem de programao mais adequada envolve alguns fatores, como afirma Balagurusamy (2008):
A escolha de uma linguagem depende de muitos fatores, como o ambiente de hardware, ambiente de negcios, requisitos do usurio e assim por diante. A principal motivao durante o desenvolvimento de cada uma dessas linguagens tem sido a preocupao com que ela seja capaz de lidar com a crescente complexidade, robustez, durabilidade e fcil manuteno dos programas. (Traduo: O Autor) (BALAGURUSAMY, 2008, p. 02).

O modelo de linguagem de programao que mais se enquadra na temtica deste trabalho, Modelagem de Sistemas com Banco de Dados NoSQL, a programao orientada a objetos, e isso se deve ao fato de que ela no apenas mais moderna, como tambm, a mais poderosa, a que oferece desempenho e possibilidades semnticas em maior quantidade. Por isso a linguagem de programao escolhida a C#. Balagurusamy (2008, p. 01) defende que esta detm uma construo robusta, durvel e confivel para que possa ser manuseada com o propsito de desenvolvimento de aplicaes objetivando o mundo real. O autor destaca que a linguagem C# combina a grande produtividade encontrada no Visual Basic, o poder da linguagem C++, antecessora do C# e a elegncia do Java. A linguagem C# no apenas integralmente orientada a objetos, mas tambm a primeira orientada a componentes, tornando o desenvolvimento simples, produtivo e eficaz. De acordo com Feij (2010), o C# a evoluo oriunda da linguagem Java no paradigma da programao. Essa linguagem assim como as C e Assembly, sem ter a inteno de competir diretamente, tende a utilizar os recursos de hardware com eficincia, diminuindo o uso de RAM ( Random Access Memory) e CPU, ocasionando maior desempenho, o que a torna, de certa forma, compatvel com a tecnologia NoSQL, tema principal deste trabalho. Microsoft Visual Studio 2012

Ao se mencionar sobre desenvolvimento de software, tem-se que considerar, outrossim, o programa em que ser desenvolvido o mesmo. No que se refere produo de sistemas, muitos desenvolvedores notaram certas dificuldades durante a elaborao dos softwares, principalmente em relao ao tempo gasto durante a produo, por isso criaram os denominados ambientes de desenvolvimento integrado (Guedes et al., 2011). Diante da dificuldade encontrada pelos elaboradores de sistemas, surgiram as ferramentas CASE (Computer-Aided Software Engineering) que, para Brown (et al., 1994, p. 12), auxiliam a produo de sistemas promovendo suporte automotivo ao desenvolvimento e manuteno. O autor destaca, inclusive, alguns pontos sobre as ferramentas CASE: Aumenta a produtividade e reduz custos quanto ao desenvolvimento de software; Aumenta o desempenho, qualidade, usabilidade e a capacidade de reutilizao do sistema produzido; Permitem manter em sintonia a documentao do produto medida que se transformam ascendentemente; e Torna mais prazerosas as tarefas enfrentadas pelos engenheiros de softwares. Inicialmente essas ferramentas surgiram na forma de assemblers, compiladores, tradutores, processadores de macro, carregadores e vinculadores. Porm, com a evoluo computacional das mquinas os sistemas tornaram-se grandes e complexos, e com isso os instrumentos assessores comearam a ser ampliados em nmero e eficcia. Com o aumento na quantidade de ferramentas auxiliadoras, surgiram novos tipos de sistemas de suporte ao desenvolvimento, como os editores de programas, depuradores e analisadores de codificao (OBRIEN; MARAKAS, 2010, p. 159). A partir destas ponderaes, o emprego de uma ferramenta CASE ou IDE (Integrated Development Environment) fundamental atualmente para o desenvolvimento de software. Alm disso, a escolha de tal suporte deve ser feita com base na linguagem e no tipo de sistema a ser produzido. Assim, o IDE escolhido para a produo do prottipo proposto o Microsoft Visual Studio 2012. Esta ferramenta foi selecionada por deter grande integrao com a linguagem de programao escolhida, C#, que ainda oferece suporte a outras linguagens da plataforma .NET. JVM Java Virtual Machine Segundo Silveira et al. (2012, p. 11), a JVM utiliza os chamados bytecodes, que so semelhantes aos comandos assembly, diferenciando-se em sua finalidade que, no caso dos bytecodes, a mquina virtual. A utilizao da JVM foi necessria pelo fato do SGBD NoSQL Cassandra ser desenvolvido na linguagem Java que, consequentemente, torna necessria sua mquina virtual apropriada, no caso a mquina virtual para o sistema operacional Microsoft Windows. Apache Cassandra O Apache Cassandra um Banco de Dados NoSQL orientado a colunas desenvolvido na linguagem Java, e, de acordo com Hewitt (2011, p. 24), foi criado pelo Facebook em 2007 como soluo a problemas de gerenciamento do volume de mensagens inbox, principalmente com inmeras leituras e gravaes aleatrias de mensagens contendo todo o tipo de dado. Segundo Hewitt (2011, p. 14), o Apache Cassandra:

[] de cdigo aberto, distribudo, descentralizado, elasticamente escalvel, altamente disponvel, tolerante a falhas, consistncia modificvel, banco de dados orientado a colunas com base no projeto de distribuio do Dynamo da Amazon e no modelo de dados do Bigtable do Google. Criado pelo Facebook, atualmente utilizado em alguns dos sites mais populares da web. (Traduo: O Autor) (HEWITT, 2011, p. 14)

Mishra (2013) refere-se ao Cassandra apontando algumas de suas caractersticas: Plano de Evoluo: esse plano de evoluo deve ser controlado pelo processamento de dados. A famlia de colunas que o Cassandra contm muito parecida com as tabelas do modelo relacional de SGBDs, porm se difere pelo fato dessas famlias poderem ser geradas de forma dinmica; Sem ponto nico de falha: o Cassandra tem uma estrutura descentralizada que pode ser distribuda atravs dos ns de dados, e cada um destes guarda as mesmas informaes que os demais ns da estrutura, evitando a configurao mestre-escravo. Caso um dos ns da estrutura tenha algum erro, nenhum problema ser causado devido ao fato de que os outros ns podem suprir o erro ocorrido; Alta disponibilidade: significa que os dados estaro disponveis maior quantidade de tempo possvel. Isso se deve distribuio e replicao dos dados atravs dos ns da estrutura; Particionamento de dados: de suma importncia para um banco de dados distribudo. Os ns da estrutura do Cassandra esto dispostos com base em uma topologia de anel: sendo a os ns intercalados igualmente com base no projeto de particionamento selecionado. O Cassandra oferece o particionamento de dados de forma aleatria e ordenado de dados; Consistncia configurvel: o Cassandra tem preferncia em disponibilidade e particionamento ao invs da consistncia, porm, ele tem um mecanismo cliente voltado para ajuste e configurao da consistncia de requisies de leituras e gravaes; Escalabilidade: o Banco de Dados Cassandra fornece um crescimento dinmico, com a adio de novos ns estrutura com base na escalabilidade horizontal. Perera (2012) concede ao Banco de Dados NoSQL Cassandra caractersticas que se assemelham s apresentadas por Mishra (2013). Tais caractersticas so: Alto ndice de disponibilidade e escalabilidade; No contm a presena de ponto nico de falha; Famlia de colunas NoSQL com alto ndice de gravao; Grande velocidade de leitura; Linguagem semelhante ao SQL nas consultas; Consulta atravs de ndices secundrios; Possibilidade de configurao de consistncia; Replicao e flexibilidade no esquema; O autor infere que esses pontos fazem desse Banco de Dados uma fcil recomendao, sendo utilizado por vrias corporaes, tais como Netflix, eBay, Twitter, Cisco, Reddit, entre outras. O Cassandra utiliza a orientao a colunas na organizao dos dados. Nesse modelo de dados, conforme Tran (2012, p. 8), os bancos de dados conjunto de informao que e relacionam e que base do modelo relacional de Banco de Dados so denominados keyspace. Dentro das keyspaces so armazenadas as famlias de colunas, semelhantes s relaes, tabelas do

modelo relacional. A dessemelhana entre as famlias de colunas do Cassandra e as tabelas relacionais que as relaes possuem linhas, tuplas que partilham as mesmas colunas, atributos, ao passo em que as linhas contidas em uma famlia de colunas no realizam essa mesma partilha. As linhas do Cassandra podem compreender qualquer quantidade de colunas variando seus tipos de linha para linha, como pode ser observado na Figura 1.

Figura 1 - Exemplo de linhas com vrias colunas em uma famlia de coluna no Cassandra Fonte: Tran (2012, p. 8)

Prottipo e Resultados Durante os testes parciais, apesar de dificuldades encontradas durante o desenvolvimento, o prottipo gerenciou o Banco de Dados NoSQL sem comprometer o desempenho geral do sistema operacional. No apareceram, em comandos simples, redundncias ou inconsistncias de informaes. Os layouts de telas, at o momento, apresentam elementos visuais bem alocados e de fcil interpretao ao usurio. Espera-se, ainda, que o prottipo de sistema tenha melhoras nos layouts, maiores opes de gerenciamento e ganhe melhor desempenho. Na tela de login, o usurio cadastrado poder realizar a autenticao e acessar o sistema, seguindo, assim, para a tela inicial e a partir dela acessar as telas de relatrios, usurios, caso seja um administrador, e a tela de produtos. Ao acessar a tela de relatrios ser possvel ao usurio gerar um relatrio com informaes sobre vendas, quantidade de produtos, entrada e sada de produtos e usurios cadastrados. Quando acessada a tela de produtos possvel gerenciar todos os produtos cadastrados no sistema bem como atualizar suas informaes, cadastrar novos produtos e efetuar buscas. Assim, a hierarquia de telas do sistema pode ser comtemplada na Figura 2.

Figura 2 Hierarquia de telas Fonte: O Autor

Referncias BALAGURUSAMY, E. Programming in C#. 2 ed. New Delhi: Tata McGraw-Hill, 2008. FEIJ, Bruno; CLUA, Esteban; SILVA, Flvio S. Corra da. Introduo Cincia da Computao com Jogos: Aprendendo a programar com entretenimento. Rio de Janeiro: Elsevier, 2010. BROWN, Alan W. et al. Principles of CASE Tool Integration. New York: Oxford University Press, 1994. GUEDES, Murilo et al. Reference Maker: Software Referenciador de Fontes Bibliogrficas, Virtuais e Verbais para Trabalhos Acadmicos. Disponvel em: <http://pt.scribd.com/doc/73845890/Reference-Maker-Software-elaborador-de-referencias>. Acesso em: 13 Ago. 2013. HEWITT, Eben. Cassandra: The Definitive Guide. Sebastopol: OReilly, 2011. MISHRA, Vivek. Instant Apache Cassandra for Developers Starter: Start developing with Cassandra and learn how to handle big data. Packt Publishing Ltd, 2013. OBRIEN, James A; MARAKAS, George M. Administrao de Sistemas de Informao. 15 ed. So Paulo: AMGH Editora, 2010. PERERA, Srinath. Consideraes sobre o Banco de Dados Apache Cassandra: Quais so as vantagens e desvantagens desse banco de dados NoSQL? Disponvel em: <http://www.ibm.com/developerworks/br/library/os-apache-cassandra/>. Acesso em: 7 Set. 2013. SILVEIRA, Paulo et al. Introduo Arquitetura e Design de Software: Uma Viso Sobre a Plataforma Java. Rio de Janeiro: Elsevier, 2012.

TRAN, Duc A. Data Storage for Social Networks: A Socially Aware Approach. Boston: University of Massachusetts, 2012. W3schools.com. Disponvel em: <http://www.w3schools.com/browsers/browsers_os.asp>. Acesso em: 5 Ago. 2013.