Hoje em dia, fala-se muito sobre os bancos de dados NoSQL. Porém, poucos ainda conhecem esse conceito, que não é novo.

Tamanho: px
Começar a partir da página:

Download "Hoje em dia, fala-se muito sobre os bancos de dados NoSQL. Porém, poucos ainda conhecem esse conceito, que não é novo."

Transcrição

1 Introdução Hoje em dia, fala-se muito sobre os bancos de dados NoSQL. Porém, poucos ainda conhecem esse conceito, que não é novo. Neste curso, explicarei o que são esses bancos de dados tão falados ultimamente, onde usar e por que usá-los. O foco será em um banco de dados largamente utilizado, que é o MongoDB, e demonstrarei exemplos de sua utilização real com o PHP, outra linguagem para Web largamente utilizada. NOSQL O que é? Por que usar? Onde usar? Tipos de armazenamento Cases reais Por que usar? O termo NoSQL foi utilizado pela primeira vez em 1998 como nome de um banco de dados relacional de código aberto que não possuía um interface SQL. Seu autor, Carlo Strozzi, alega que o movimento NoSQL "é completamente distinto do modelo relacional e portanto deveria ser mais apropriadamente chamado "NoREL" ou algo que produzisse o mesmo efeito". Porém, o termo só voltou a ser assunto em 2009 por um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria organizar um evento para discutir bancos de dados open source distribuídos.

2 NoSQL são diferentes sistemas de armazenamento que vieram para suprir necessidades nas quais os bancos de dados tradicionais (relacionais) são ineficazes. Muitas dessas bases apresentam características interessantes, como: alta performance, escalabilidade, replicação, suporte a dados estruturados, grafos e sub-colunas. O NoSQL surgiu da necessidade de uma performance superior e de alta escalabilidade. Os atuais bancos de dados relacionais são muito restritos a isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, de mais memória e de mais disco um servidor precisa. O NoSQL tem uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais servidores, não necessariamente de alta performance. Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados. Essa forma de utilização é muito mais eficiente e econômica. Além disso, os bancos de dados NoSQL são muito tolerantes a erros. No caso dos bancos NoSQL, toda a informação necessária estará agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas para formar uma informação, ela estará em sua totalidade no mesmo registro. Onde usar? Atualmente, temos vários bancos NoSQL que podem resolver diversos problemas. De qualquer forma, eles não são a chave para TODOS os problemas. Ainda existem cenários em que os bancos relacionais são mais indicados, visto que eles possuem propriedades ACID. Logo, são melhores em cenários em que os dados são muitíssimo importantes e não pode haver nenhuma quebra de referência. Ou seja, não indicaria, ainda, algum banco NoSQL para sistemas de transações financeiras, por exemplo. Mas se o seu sistema é alguma rede social ou algum site que necessite de alta disponibilidade ou escalabilidade, com certeza lhe indicaria um banco NoSQL. Entretanto, não precisamos mudar todo o sistema para algum banco NoSQL. Podemos utilizar um banco NoSQL e um relacional em conjunto. Como muitos já fazem, mas nem percebem. Por exemplo: um sistema que utiliza cache com certeza está usando um banco NoSQL no cache, como o mais conhecido Memcached. A API Storage do HTML5 também

3 utiliza um sistema de banco NoSQL do tipo chave-valor. Tipo de armazenamento Existem diversos tipos de armazenamento, no qual cada um trata os dados de uma forma diferente e que pode ser mais específico para o objetivo desejado. Os tipo de armazenamento são: Wide Column Store/Column Families, Document Store, Key Value/Tuple Store, Eventually Consistent Key Value Store, Graph Databases, Object Databases, Grid Database Solutions, XML Databases. Lista retirada de Key/Value Store Esse é o tipo de banco de dados NoSQL mais simples. O conceito dele é uma chave e um valor para essa chave, mas ele é o que aguenta mais carga de dados. Estes tipos de bancos de dados são o que tem a maior escalabilidade: Berkeley DB Tokyo Cabinet Kyoto Cabinet Project Voldermort MemcacheDB SimpleBD Redis Riak Wide Columns Store Fortemente inspirados pelo BigTable do Google, suportam várias linhas e colunas, e também permitem subcolunas. Além do BigTable do Google, outros que usam essa tecnologia são: HBase(Apache)

4 HiperTable Cassandra(Apache) Document Store Baseados em documentos XML ou JSON, podem ser localizado pelo seu id único ou por qualquer registro que tenham no documento: CouchDB(Apache) MongoDB RavenDB Graph Store Com uma complexibilidade maior, esses bancos de dados guardam objetos, e não registros, como os outros tipos de NoSQL. A busca desses itens é feita pela navegação destes objetos: Neo4J InfoGrid HyperGraphDB Column Oriented Store Esses são bancos de dados relacionais que têm características do NoSQL. A principal diferença deles é que os dados são armazenados em colunas, ajudando na escalabilidade: Vertica MonetDB LucidDB Infobright Ingres/Vectorwise Na imagem abaixo, podemos ver um gráfico demonstrando a diferença entre o tamanho da base de dados e a complexidade dos seus dados. Assim, podemos perceber que os bancos do tipo chave-valor conseguem aguentar

5 mais dados, sendo que seus dados são mais simples, enquanto que os bancos do tipo grafo aguentam menos dados, e seus dados são mais complexos. Cases reais Um case real interessante é o da Netflix que utiliza 3 bancos NoSQL: SimpleDB, HBase e Cassandra. O SimpleDB é uma implementação NoSQL da Amazon, e por isso foi escolhido, já que a empresa utiliza o serviço AWS da Amazon. Ele escreve réplicas automáticas nas zonas disponíveis dentro de uma região. É altamente durável e também possui características, além de uma interface de chave-valor simples, como: vários atributos chave de linha, operações em lote, as leituras consistentes etc. O HBase é profundamente ligado ao Hadoop e pode escrever consultas em tempo real, apesar de sacrificar um pouco a disponibilidade pela consistência dos dados. Cassandra foi a escolhida pela escalabilidade e pelo poder de replicar dados assincronamente através de múltiplas regiões geográficas. Pode escalar dinamicamente adicionando mais servidores sem a necessidade de re-shard ou reiniciar. Como se pode ver, cada banco vem para suprir alguma necessidade específica. Esse foi um exemplo de como uma empresa pode utilizar vários bancos NoSQL para tratar de assuntos específicos. Porém, podemos usar facilmente apenas um para resolver nossos problemas.

6 O MongoDB, que será nosso banco de estudo, é usado pelas seguintes empresas em produção: Craigslist Shutterfly foursquare bit.ly SourceForge Disney MTV Networks GitHub Justin.tv CollegeHumor SugarCRM GrooveShark CartolaFC Podemos ver mais empresas utilizando-o emhttp://www.mongodb.org/display/docs/ Production+Deployments MongoDB - Introdução O MongoDB é um dos bancos NoSQL mais utilizados, pela sua facilidade de instalação, sua documentação e os diversos drivers para inúmeras linguagens de programação. Ele é um banco de dados orientado a documentos, escalável, livre de esquema, de alto desempenho e código aberto escrito em C++. Algumas funcionalidades interessantes do MongoDB são: orientação a documentos(json/bson) suporte a index replicação e alta disponibilidade

7 auto-sharding map/reduce GridFS suporte comercial da 10gen. Suas queries são simples e ricas. E seu map/reduce é bem flexível. Quando utilizamos, vemos a grande diferença de velocidade entre o MongoDb e os outros bancos relacionais. Isso acontece principalmente por ele guardar os dados na memória RAM, persistindo-o no disco rígido também. Por isso, é altamente aconselhável sempre usar um segundo nó de réplica para, caso o servidor desligue, você não perder seus dados. Para a maioria dos desenvolvedores que vem do mundo relacional, o MongoDB parecerá estranho, mas com o tempo é possível notar como ele é mais simples que a grande maioria dos SGBDs. A grande diferença, que para mim realmente é uma vantagem, é não possuir schema e não tentar representar um mundo n-dimensional com apenas 2 dimensões: coluna e linha. No MongoDB, o conjunto de dados não se chama tabelas, mas sim coleção. Essa coleção possui uma estrutura de JSON, como no seguinte exemplo: usuario{ nome: "Jean", apelido: "Suissa", idade: 26, telefone:{celular: , residencial: }} Como podemos ver nesse exemplo, além de possuir os campos nome, apelido e idade, o campo celular é uma lista de valores. Nossos documentos JSON podem conter outros documentos JSON dentro, e assim por diante. Você irá controlar tudo isso via programação. Isso se diferencia bastante do modelo relacional, no qual todos os registros necessariamente precisam ter os mesmos campos, mesmo que sejam NULOS. Já no MongoDB você apenas acrescentará campos nos registros que realmente precisam. E, como havia dito anteriormente, o programador tem que ter muito mais cuidado com esse tipo de coisa para depois não se perder em suas estruturas. Porém, não pense que esse modelo NOSQL serve para todos os casos. Os casos em que ele serve perfeitamente são: sistemas de logs, sistemas que não necessitam de controle de transação, que necessitam de alta escalabilidade e que não possuem dados críticos.

8 Uma dica que posso dar sobre como escolher o MongoDB para um projeto é pensar se o seu sistema terá muito mais leituras do que escritas concorrentes. Por exemplo: em um e-commerce, não haverá quase nenhum cliente escrevendo em cima de algum produto, porém haverá muitos clientes lendo esses registros. Esse é um caso clássico para se utilizar o MongoDb. Outro aspecto que pode modificar sua modelagem no MongoDB é pensar como suas informações serão lidas pela sua aplicação; nesse caso, você modelará seu banco pensando em agrupar suas informações para que sejam buscadas apenas uma vez e que o retorno dessas informações seja suficiente para a maioria das atividades executadas na aplicação. Instalação Windows Linux MacOS Windows Faça o download para o Windows em Quickstart+Windows Dezip o conteúdo do zip baixado em alguma pasta. Ex.: C:\mongo Crie 2 pastas no seu C:\, pois o MongoDB utiliza como padrão essas 2 pastas. C:\> mkdir \data C:\> mkdir \data\db Caso você queira utilizar pastas diferentes, use o atributo --dbpath quando iniciar o serviço do Mongo no seu console. Para você iniciar o seu Mongo, vá até o console e digite: cd mongo\bin mongod

9 Após iniciado o serviço, você pode abrir outro console e ir na mesma pasta bin e rodar: mongo Com isso, você estará rodando o cliente do MongoDB e já poderá testá-lo com seus comandos. Agora baixe a extensão do Mongo para PHP em https://github.com/mongodb/mongo-phpdriver/downloads Baixe a versão correta para seu Windows e coloque a dll na pasta das suas extensões de PHP. Após isso, abra o seu php.ini e adicione a seguinte linha: extension=php_mongo.dll Linux Para instalar "automagicamente" o MongoDB, basta instalá-lo via apt-get, mas antes precisamos atualizá-lo: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 Crie um arquivo /etc/apt/sources.list.d/10gen.list e adicione essa linha: deb dist 10gen Agora só atualizamos: sudo apt-get update Para instalar seguimos a velha fórmula: $ sudo apt-get install mongodb-10gen Agora instalaremos a extensão do Mongo para o PHP. $ sudo pecl install mongo Crie as 2 pastas padrão que o Mongo utiliza com os seguintes comandos:

10 $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db (caso não consiga. pode usar o chmod 777 -Rf na pasta / data, mas não é aconselhável) $ sudo pico /etc/php5/apache2/php.ini extension=mongo.so Adicione a seguinte linha ao seu php.ini: Reinicie seu Apache e confira se a extensão está rodando. $ sudo /etc/init.d/apache2 restart Para conferir se a extensão está rodando, crie um arquivo php com o seguinte conteúdo: <?php phpinfo();?> Procure por mongo e veja se ele está devidamente instalado. Caso não consiga instalar via apt-get, pode baixar diretamente do site em:http:// Após a extração dos arquivos em uma pasta qualquer, você deve prestar atenção: quando você chama o binário mongo ou mongod, terá que fazer com a url completa da pasta. Para você rodar o serviço do Mongo, basta rodar o seguinte comando: mongod Em um outro terminal, você irá rodar o cliente do Mongo com o seguinte comando: mongo MacOS Para instalar "automagicamente" o MongoDB, basta instalá-lo via apt-get:

11 $ brew update $ brew install mongodb Ou se você usa ports: $ sudo port install mongodb Agora, instalaremos a extensão do Mongo para o PHP. $ sudo pecl install mongo Crie as 2 pastas padrão que o Mongo utiliza com os seguintes comandos: $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db (caso não consiga, pode usar o chmod 777 -Rf na pasta / data, mas não é aconselhável) $ sudo pico /etc/php5/apache2/php.ini (ou onde seu php.ini estiver) Adicione a seguinte linha ao seu php.ini: extension=mongo.so Reinicie seu Apache e confira se a extensão está rodando. $ sudo /etc/init.d/apache2 restart (ou restart via MAMP) Para conferir se a extensão está rodando, crie um arquivo php com o seguinte conteúdo: <?php phpinfo();?> Procure por mongo e veja se ele está devidamente instalado. Caso não consiga instalar via port ou brew, pode baixar diretamente do site em:http:// Após a extração dos arquivos em uma pasta qualquer, você deve prestar atenção: quando você chama o binário mongo ou mongod, terá que fazer com a url completa da pasta. Para você rodar o serviço do Mongo, basta rodar o seguinte comando:

12 mongod Em um outro terminal, você irá rodar o cliente do Mongo com o seguinte comando: mongo Comandos Coleção Inserção Consulta Alteração Exclusão Mapeamento SQL para MongoDB Coleção Antes de criarmos uma coleção, precisamos criar uma Database e, para isso, usaremos o seguinte comando: use nome_database Caso a Database já exista, o Mongo apenas a setará como default. Para listarmos as databases criadas, usamos o seguinte comando: show dbs Para criarmos uma coleção, precisamos apenas usá-la: db.nome_colecao.insert({a:1}) Sempre usaremos, para cada comando, o início db, que será o atalho para a database que escolhemos inicialmente com o comando use. A coleção só existirá após algum dado ser inserido nela. Para listarmos as coleções, usamos o seguinte comando: show collections

13 Para deletarmos a coleção, usamos: db.nome_colecao.drop() Se quisermos apenas limpar a coleção sem apagá-la, usamos: db.nome_colecao.remove() Caso queiramos criar uma collection sem utilizá-la inicialmente, podemos usar o seguinte comando: db.createcollection("minha_collection") Inserção Para inserirmos algum dado, sempre utilizamos um documento no formato JSON. Usaremos o comando insert() da seguinte forma: db.professores.insert({nome:?jean?, idade:26, disciplinas:[?php?,? NOSQL?], sexo:?m?, created : new Date('12/21/2012')}) Ou também podemos criar um JSON com os dados e passá-lo como parâmetro para a função, como no exemplo a seguir: json = {nome:?jean?, idade:26, disciplinas:[?php?,?nosql?], sexo:?m?, created : new Date('12/21/2012')} db.professores.insert(json) Consulta Para fazermos consultas no MongoDB, utilizaremos 2 funções: find() findone() Possuímos a seguinte sintaxe para fazermos consultas: db.colecao.find({clausulas, campos})

14 E, para usarmos como WHERE, são necessários alguns operadores especiais que listo na próxima página. Caso seja necessária uma consulta por string mais complexa, podemos usar REGEX. db.professores.find( { nome : /J*/i } );<br />db.professores.find( { name : { $regex : 'J*'} } ); Agora veremos um paralelo entre algumas funções de seleção da SQL e sua alternativa para o Mongo: select count(*) from professores<br />db.professores.count() select count(*) from professores where idade > 30<br / >db.professores.count({idade:{$gt: 30}}) select nome from professores where idade < 18<br / >db.professores.find({idade: {$lt: 18}})) select nome, idade from professores<br />db.professores.find(null, {nome:1, idade:1} ) select nome, idade from professores where idade >= 18<br / >db.professores.find({idade:{$gte: 18}}, {nome:1, idade:1} ) select * from professores order by nome ASC <br / >db.professores.find().sort({nome:1}) select * from professores order by idade DESC <br / >db.professores.find().sort({idade:-1}) select * from professores order by nome ASC limit 0,2 <br / >db.professores.find().sort({nome:1}).limit(2) select * from professores limit 2 offset 10<br / >db.professores.find().limit(2).skip(10) Entretanto, qualquer seleção com find() irá retornar um cursor do MongoDB no qual você precisará iterar para retirar suas informações, enquanto que utilizando o findone() você retornará apenas 1 registro. select nome, idade from professores LIMIT 0,1<br / >db.professores.findone(null, {nome:1, idade:1} ) Operadores Condicionais No MongoDB, utilizamos operadores especiais para criar nossos critérios de busca. Abaixo, a lista desses operadores: < ou $lt <= ou $lte > ou $gt

15 >= ou $gte $all - retorna o objeto no qual todos os valores foram encontrados $exists - retorna o objeto caso uma chave exista $mod - retorna o objeto quando o módulo de um valor foi encontrado $ne- retorna o objeto no qual o valor não foi encontrado $in- retorna o objeto se o valor foi encontrado $nin- retorna o objeto se nenhum dos valores foi encontrado $nor- retorna o objeto caso a cláusula negação do OU for verdadeira $or- retorna o objeto caso a cláusula OU for verdadeira $and- retorna o objeto caso a cláusula E for verdadeira $size $type - retorna o objeto caso a chave seja do tipo especificado para conferir a lista dos tipos e seus valores. Acesse a lsta dos tipos e seus valores inserir bloco Ordenação Para ordenarmos uma consulta no MongoDB, precisamos apenas utilizar a função sort(), como no exemplo a seguir: db.professores.find({}).sort({ 1}); Utilizamos o valor 1 para ordenação ASCENDENTE e -1 para ordenação DESCENDENTE. Skip e Limit Para pularmos o início do retorno dos nossos registros, usamos a função skip() e, para limitarmos a quantidade de registros retornados, utilizamos a função limit(), como demonstrado abaixo: db.professores.find().skip(20).limit(10);

16 Cursores Qualquer busca feita com o find() irá retornar um cursor e, para retirarmos os valores dele, precisamos iterar nele como no exemplo abaixo: var cur = db.professores.find(); cur.foreach( function(x) { print(tojson(x))}); Alteração Para realizarmos alterações, podemos fazer uma consulta que irá retornar um JSON. Podemos manipulá-lo e mandar o Mongo para salvar o objeto com a modificação. Podemos fazer isso da seguinte forma: Para realizarmos uma alteração no MongoDB, podemos utilizar 2 funções: save() update() A diferença entre o save() e o update() é que a função save() irá criar o registro caso ele não encontre nenhum que bata com o seu critério de busca. Porém, isso também pode ser feito com o parâmetro upsert na função update(). A sintaxe para a função update() é a seguinte: db.collection.update( criterio, obj, upsert, multi ) criterio - query que irá selecionar o registro para alterar objnew - objeto modificado ou operadores de alteração upsert - caso o registro não exista, ele será inserido multi - caso encontre mais de um registro pelo criterio, ele atualiza todos esses registros Caso você não passe o parâmetro multi, ele só atualiza um único registro. Exemplo da diferença entre o update() e o save():

17 db.minhacollection.save(x); db.minhacollection.update( { _id: x._id }, x, /*upsert*/ true ) A forma mais simples de se alterar um registro é pesquisando-o com findone, editandoo e, após isso, salvando. Caso precise apenas salvar, simplesmente aconselho o uso da função save(), como a seguir: professor = db.professores.findone( { nome : "Jean" } );<br / >professor.idade = 28;<br />db.professores.save(professor); Mas também podemos alterar diretamente com o update: professor = db.professores.findone( { nome : "Jean" } );<br / >professor.idade = 27;<br />db.professores.update({ nome : "Jean" }, {$set: {idade: 28} }); Fora isso, podemos usar diversos operadores na query, exemplo: db.professores.update( { nome:"jean" }, { $inc: { visitas: 1 }, $set: { idade: 28 } } ); Operadores de Modificação Os operadores de modificação servem para que você possa alterar valores nos registros diretamente na query do MongoDB. Como vimos anteriormente, para atualizar minha idade de 27 para 28 anos, usamos o operador $set. $inc { $inc : { campo : valor } } Incrementa um valor no campo; caso o campo não exista, ele irá criar o campo e setar o valor. Para decrementar, basta passar um valor negativo. $set { $set : { campo : valor } } Seta o valor do campo. $unset

18 { $unset : { campo : 1} } Deleta o campo. $push { $push : { campo : valor } } Adiciona um valor ao campo se o campo for um array existente. Caso contrário, transforma o campo em um array com o valor como índice. Porém, se o campo existe e não for um array, irá retornar um erro. Arrays múltiplos podem ser alterados em uma única operação separando os pares de campo : valor por vírgula. { $push : { campo1 : valor, campo2 : valor2 } } $pushall { $pushall : { campo : valor_array } } Adiciona cada valor dentro de valor_array para o campo se o campo for um array existente. Caso contrário, seta o campo com o valor_array. Se o campo estiver presente mas não for um array, irá retornar um erro. $addtoset e $each { $addtoset : { campo : valor } } Adiciona um valor para um array somente se o valor ainda não estiver no array, caso o campo seja um array existente. Caso contrário, seta o campo para o array se o campo não existir. Se o campo estiver presente e não for array, irá retornar um erro. Para adicionar uma lista de vários valores, use o qualificador $each: { $addtoset : { a : { $each : [ 3, 5, 6 ] } } } $pop { $pop : { campo : 1 } } Remove o último elemento do array campo. $pull { $pull : { campo : _valor } }

19 Remove todas as ocorrências de _valor no campo se o campo for um array. Se o campo estiver presente mas não for array, irá retornar um erro. Para acertar um valor exato, você também pode usar expressões como essas: { $pull : { campo : {<criterio>} } } //remove elementos do array que batam com o seu critério { $pull : { campo : {campo2: valor} } } //remove os elementos do array com campo2 possuindo o valor { $pull : { campo : {$gt: 3} } } //remove elementos do array que forem maior que 3 $pullall { $pullall : { campo : valor_array } } Remove todas as ocorrências de cada valor no valor_array do campo se o campo for um array. Se o campo existir mas não for um array, irá retornar um erro. $rename { $rename : { nome_campo_antigo : nome_campo_novo } } Renomeia o nome_campo_antigo para nome_campo_novo. Exclusão Para excluir dados, utilizamos a mesma lógica, porém com a função remove(). db.professores.remove(); // exclui tudo<br / >db.professores.remove({nome: "Jean"}); // exclui todos os professores com nome = Jean O jeito mais eficiente de remover um documento é utilizando seu ObjectID, exemplo: professor = db.professores.findone({nome: "Jean"}) db.professores.remove({_id: professor._id}); Mapeamento SQL para MongoDB

20 Vamos ver alguns exemplos de SQL e sua tradução para o PHP usando MongoDB: INSERT INTO USERS VALUES(1,1) $db->users->insert(array("a" => 1, "b" => 1)); SELECT a,b FROM users $db->users->find(array(), array("a" => 1, "b" => 1)); SELECT * FROM users WHERE age=33 $db->users->find(array("age" => 33)); SELECT a,b FROM users WHERE age=33 $db->users->find(array("age" => 33), array("a" => 1, "b" => 1)); SELECT a,b FROM users WHERE age=33 $db->users->find(array("age" => 33), array("a" => 1, "b" => 1)); SELECT a,b FROM users WHERE age=33 ORDER BY name $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1)); SELECT * FROM users WHERE age>33 $db->users->find(array("age" => array('$gt' => 33))); SELECT * FROM users WHERE age<33 <br />$db->users->find(array("age" => array('$lt' => 33))); SELECT * FROM users WHERE name LIKE "%Joe%" $db->users->find(array("name" => new MongoRegex("/Joe/"))); SELECT * FROM users WHERE name LIKE "Joe%" $db->users->find(array("name" => new MongoRegex("/^Joe/"))); SELECT * FROM users WHERE age>33 AND age<=40 $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40))); SELECT * FROM users ORDER BY name DESC $db->users->find()->sort(array("name" => -1)); CREATE INDEX myindexname ON users(name) $db->users->ensureindex(array("name" => 1));

21 CREATE INDEX myindexname ON users(name,ts DESC) $db->users->ensureindex(array("name" => 1, "ts" => -1)); SELECT * FROM users WHERE a=1 and b='q' $db->users->find(array("a" => 1, "b" => "q")); SELECT * FROM users LIMIT 10 SKIP 20 $db->users->find()->limit(10)->skip(20); SELECT * FROM users WHERE a=1 or b=2 $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2)))); SELECT * FROM users LIMIT 1 $db->users->find()->limit(1); EXPLAIN SELECT * FROM users WHERE z=3 $db->users->find(array("z" => 3))->explain() SELECT DISTINCT last_name FROM users $db->command(array("distinct" => "users", "key" => "last_name")); SELECT COUNT(*) FROM users $db->users->count(); SELECT COUNT(*) FROM users where AGE > 30 $db->users->find(array("age" => array('$gt' => 30)))->count(); SELECT COUNT(AGE) from users $db->users->find(array("age" => array('$exists' => true)))->count(); UPDATE users SET a=1 WHERE b='q' $db->users->update(array("b" => "q"), array('$set' => array("a" => 1))); UPDATE users SET a=a+2 WHERE b='q' $db->users->update(array("b" => "q"), array('$inc => array("a" => 2))); DELETE FROM users WHERE z="abc" $db->users->remove(array("z" => "abc"));

22 Sharding O MongoDB suporta uma arquitetura automatizada sharding/partição, permitindo escalar horizontalmente em vários nós. Para aplicações que superam os recursos de um servidor de banco de dados único, o MongoDB pode converter para um cluster sharded, gerenciando automaticamente o failover e o balanceamento de nós, com poucas mudanças ou não para o código do aplicativo original. Sharding é o particionamento de dados entre vários computadores de uma forma de preservação da ordem. Para dar um exemplo, vamos imaginar sharding como uma coleção de usuários pelo seu estado de residência. Em uma visão simplista, se designar três máquinas como servidores de nossos cacos, os usuários podem ser divididos por máquina da seguinte forma: Dividindo a quantidade de estados existentes pelo número de shards existentes. Pensando na quantidade de dados existentes por estado para fazer um balanceamento correto. Nosso aplicativo se conectará ao cluster sharded através de um processo Mongos, que encaminha as operações para o(s) shard(s) apropriado(s). Dessa forma, o aglomerado MongoDB sharded se parecerá como um único servidor lógico para a nossa aplicação. Desde que nossos documentos estejam organizados em uma forma de preservação da ordem, todas as operações que especificam o estado de residência serão encaminhadas apenas para os nós que contêm esse estado. Como o nosso foco é trabalhar com PHP, não me aprofundarei nesta sessão, pois o assunto é muito extenso. Configuração Componentes Sharding Primeiro configuramos os fragmentos individuais (mongod's), depois os servidores de configuração e os processos Mongos.

23 Servidores Shard Um servidor de shard consiste em um processo de mongod ou em um conjunto de réplicas de processos mongod. Para a produção, vamos usar um conjunto de réplicas para cada fragmento de dados para segurança e failover automático. Para começar com um teste simples, podemos executar um único processo mongod por shard, como uma configuração de teste não exige failover automatizado. Servidores de configuração Vamos executar um mongod --configsvr para cada servidor de configuração. Se você está apenas testando, pode usar apenas um servidor de configuração. Para a produção, usar três pelo menos. A replicação dos dados para cada configuração do servidor é gerenciada pelo roteador (mongos), pois eles têm um protocolo de replicação síncrona otimizado para três máquinas. Não execute qualquer um dos servidores de configuração com - replset; pois a replicação entre eles é automática. Mongos Router Execute o processo mongos nos servidores de sua escolha. Especifique o parâmetro - configdb para indicar a localização da base de dados de configuração(s). Nota: não use os nomes de DNS, endereços, para o ip. Caso você use, quando mover os servidores de configuração mais tarde, será mais difícil. Note que cada Mongos vai ler o primeiro servidor de configuração na lista fornecida. Se você estiver executando servidores de configuração em mais de um centro de dados, você deve colocar os servidores mais próximos de configuração no início da lista. Exemplo Servidores Shard

24 Primeiramente precisamos criar os serviços de sharding. Esse exemplo é apenas didático e será rodado em apenas um servidor. mkdir /data/db/a /data/db/b mongod --shardsvr --dbpath /data/db/a --port > /tmp/sharda.log & cat /tmp/sharda.log mongod --shardsvr --dbpath /data/db/b --port > /tmp/shardb.log & cat /tmp/shardb.log Obs.: O cat serve apenas para verificarmos se o serviço subiu realmente e o & serve para rodar em background. Servidores de Configuração mkdir /data/db/config mongod --configsvr --dbpath /data/db/config --port > /tmp/ configdb.log & cat /tmp/configdb.log Mongos Router mongos --configdb localhost:20000 > /tmp/mongos.log & cat /tmp/mongos.log Precisamos dizer qual é a nossa database, collection e shard key. db.runcommand( { enablesharding : "test" } ) {"ok" : 1} db.runcommand( { shardcollection : "test.people", key : {name : 1} } ) { "collectionsharded" : "test.people", "ok" : 1 } GridFS GridFS é uma especificação para armazenar grandes arquivos, e ele provê um mecanismo transparente para a divisão dos arquivos em vários documentos. Então, podemos manipular os arquivos como se fossem documentos, ou seja, podemos pesquisar por seus metadados facilmente.

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2 Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2 MongoDB Diego Fraga - 083746 Gabriel Henrique - 083771 Lauro Henrique - 074259 O que é MongoDB? - MongoDB é uma ferramenta de

Leia mais

Engenharia de software 2011A. Trabalho sobre

Engenharia de software 2011A. Trabalho sobre Engenharia de software 2011A Trabalho sobre NOSQL Not only SQL NoSQL Not only SQL GRUPO - 9 Cléverton Heming Jardel Palagi Jonatam Gebing Marcos Wassem NOSQL O Termo NoSQL, foi utilizado pela primeira

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

NoSQL: onde, como e por quê? Rodrigo Hjort rodrigo@hjort.co

NoSQL: onde, como e por quê? Rodrigo Hjort rodrigo@hjort.co NoSQL: onde, como e por quê? Rodrigo Hjort rodrigo@hjort.co Quem aqui usa banco de dados? Por que precisamos de SQL? Onde usamos SQL (i.e. ACID)? MAS... Universo digital em expansão Fonte: IDC White Paper,

Leia mais

Passos Preliminares: Acessando a máquina virtual via ssh.

Passos Preliminares: Acessando a máquina virtual via ssh. CIn/UFPE Sistemas de Informação Redes de Computadores Professor: Kelvin Lopes Dias Monitor: Edson Adriano Maravalho Avelar {kld,eama@cin.ufpe.br Instalando o APACHE, PHP (PHPADMIN), MySQL. Este tutorial

Leia mais

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro O MySQL Cluster é versão do MySQL adaptada para um ambiente de computação distribuída, provendo alta disponibilidade e alta redundância utilizando

Leia mais

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) Introdução aos Bancos de Dados Não-Relacionais Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) Conteúdo Histórico de BDs não-relacionais na Web 4 Categorias de bancos NoSQL Exemplos de

Leia mais

Bancos de dados NOSQL (Not Only SQL)

Bancos de dados NOSQL (Not Only SQL) Bancos de dados NOSQL (Not Only SQL) Qual banco de dados utilizado pelo Facebook e Twitter???? E pelo Google? Quando você digita pindamonhangaba no Google, e ele traz: "Aproximadamente 7.220.000 resultados

Leia mais

Uma Breve Introdução. Andréa Bordin

Uma Breve Introdução. Andréa Bordin Uma Breve Introdução Andréa Bordin O que significa? NoSQL é um termo genérico que define bancos de dados não-relacionais. A tecnologia NoSQL foi iniciada por companhias líderes da Internet - incluindo

Leia mais

Guia de instalação para ambiente de Desenvolvimento LINUX

Guia de instalação para ambiente de Desenvolvimento LINUX Guia de instalação para ambiente de Desenvolvimento LINUX Conteúdo deste manual Introdução O guia de instalação... 3 Capítulo 1 Instalando o servidor Web Apache... 4 Teste de instalação do Apache... 9

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 5 SELECT * FROM Minha_memoria Revisando Sintaxes SQL e Criando programa de Pesquisa Ano:

Leia mais

OmniDB - Manual do Usuário

OmniDB - Manual do Usuário OmniDB - Manual do Usuário Rafael T. Castro, William Ivanski, eluis Felipe T. Castro 2016 Rafael T. Castro, William Ivanski, eluis Felipe T. Castro Conteúdo 1. Introdução............................................

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM NOVEMBRO / 2014 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

NoSQL. Cintia Freitas de Moura. BCC 441 Banco de Dados II / 2014

NoSQL. Cintia Freitas de Moura. BCC 441 Banco de Dados II / 2014 NoSQL Cintia Freitas de Moura BCC 441 Banco de Dados II / 2014 Origem: O termo NoSQL foi usado pela primeira vez em 1998, como o nome de um banco de dados relacional de código aberto que não possuía um

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

David Hows Peter Membrey Eelco Plugge

David Hows Peter Membrey Eelco Plugge David Hows Peter Membrey Eelco Plugge Novatec Original English language edition published by Apress, Copyright 2014 by Apress, Inc.. Portugueselanguage edition for Brazil copyright 2015 by Novatec Editora.

Leia mais

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com + Curso PHP Aula 08 Bruno Falcão brunogfalcao@gmail.com + Roteiro Conectividade com BD SQL + SQL Structured Query Language. Padrão para interagir com banco de dados relacionais. + Banco de dados Um banco

Leia mais

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Procuraremos mostrar os principais procedimentos para fazer um cadastro de registros numa base de dados MySQL utilizando a linguagem

Leia mais

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22

Sumário Agradecimentos... 19 Sobre.o.autor... 20 Prefácio... 21 Capítulo.1..Bem-vindo.ao.MySQL... 22 Sumário Agradecimentos... 19 Sobre o autor... 20 Prefácio... 21 Capítulo 1 Bem-vindo ao MySQL... 22 1.1 O que é o MySQL?...22 1.1.1 História do MySQL...23 1.1.2 Licença de uso...23 1.2 Utilizações recomendadas...24

Leia mais

13 Conectando PHP com MySQL 13.1 Introdução

13 Conectando PHP com MySQL 13.1 Introdução 13 Conectando PHP com MySQL 13.1 Introdução Agora que você já tem uma idéia básica de comandos MySQL, poderemos ver como a linguagem PHP pode interagir com este banco de dados através de inúmeras funções.

Leia mais

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open

Leia mais

Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de

Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de BD Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de informação para nosso êxito no curso. A intenção de elaborar

Leia mais

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127 Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

PHP Profissional. Alexandre Altair de Melo / Mauricio G. F. Nascimento. Editora Novatec

PHP Profissional. Alexandre Altair de Melo / Mauricio G. F. Nascimento. Editora Novatec Introdução Como a idéia deste livro é ir direto ao ponto, vou fazer isso já na introdução. A idéia desse livro não é explicar a teoria e filosofia do PHP, da orientação a objetos, as maravilhas dos design

Leia mais

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs? BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Um Banco

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com. Preparando o ambiente do Banco de dados Mysql

Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com. Preparando o ambiente do Banco de dados Mysql Criar database: Sensor de temperatura Parte 5 Cleiton Bueno www.cleitonbueno.wordpress.com Preparando o ambiente do Banco de dados Mysql CREATE DATABASE `tempuino` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

Leia mais

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork A DarumaFramework está com suas funções nativas ao programador PHP devido a extensão de aplicativo php_darumaframework. Para usar esta extensão,

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Nome Número: Série Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Proposta do projeto: Competências: Compreender a orientação a objetos e arquitetura cliente-servidor, aplicando-as

Leia mais

Tutorial de Uso com o Java

Tutorial de Uso com o Java Tutorial de Uso com o Java Criado por Fernando Anselmo Versão 1.0 em 18/08/2012 Seção 1 Nesta seção veremos: Histórico do MongoDB Como instalar o MongoDB Console de Comandos Usar o Java MongoDB (de "humongous

Leia mais

Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007

Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007 Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007 Este tutorial é destinado a oferecer uma bem básica introdução para o uso do componente Zend_Auth com o Zend

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no

Leia mais

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON) Márcio Koch 1 Currículo Formado na FURB em Ciência da Computação Pós graduado em Tecnologias para o desenvolvimento de aplicações web Mestrando em Computação Gráfica na UDESC Arquiteto de software na Senior

Leia mais

Começando com Zend Framework

Começando com Zend Framework Começando com Zend Framework Versão brasileira da apresentação disponível em http://www.slideshare.net/baohx2000/zend-framework-19-setup-using-zendtool Ou: Como eu aprendi a parar de me preocupar e amei

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

GUIA PHP com MYSQL Autor: Everton Mendes Messias

GUIA PHP com MYSQL Autor: Everton Mendes Messias PHP (Hypertext Preprocessor) : Linguagem de programação interpretada. Tags PHP: phpinfo(); Comentários: //, # - comentário de uma linha /* comentário de várias linhas */ GUIA PHP com MYSQL Autor: Everton

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

AULA 1 PHP O QUE É APACHE FRIENDS

AULA 1 PHP O QUE É APACHE FRIENDS O QUE É PHP Se você já programa PHP, aconselho que pule para o capítulo 7 desse livro. Pois até esse capitulo iremos abordar algoritmos em PHP até a construção de uma classe com seus métodos e atributos

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE

CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE NoSQL Banco de Dados Não Relacional ALUNO: Heitor Oliveira Silva PROFESSOR ORIENTADOR:

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas; Conjunto de informações relacionadas entre si; Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas; Conjunto de Tabelas onde cada linha é um vetor de dados específico;

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos

Leia mais

Lazarus pelo SVN Linux/Windows

Lazarus pelo SVN Linux/Windows Lazarus pelo SVN Linux/Windows Sei que não faltam artigos sobre como obter e compilar o Lazarus e o FPC pelo SVN, mas sei também que nunca é de mais divulgar um pouco mais e talvez escrever algo diferente.

Leia mais

Neo4j Aprendendo conceitos por trás do Neo4j. Sem SQL? Apresentação. Por que grafos, por que agora? Por que grafos, por que agora?

Neo4j Aprendendo conceitos por trás do Neo4j. Sem SQL? Apresentação. Por que grafos, por que agora? Por que grafos, por que agora? Neo4j Aprendendo conceitos por trás do Neo4j Universidade Federal do Paraná - UFPR Programa de Pós-Graduação em Informática - PPGInf Oficina de Banco de Dados - CI829 Profa: Dra. Carmem Hara Aluno: Walmir

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo Departamento de Engenharia Informática 2014/2015 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 1 O que é Cold Fusion? 3 Arquitetura Cold Fusion 3 Cold Fusion Markup Language (CFML) 4 O que devo saber para programar em CFML? 4 HTML 4 Desenho de Banco de Dados Relacionais

Leia mais

PHP (Seções, Cookies e Banco de Dados)

PHP (Seções, Cookies e Banco de Dados) PHP (Seções, Cookies e Banco de Dados) André Tavares da Silva andre.silva@udesc.br Seções Basicamente, as seções são métodos que preservam determinados dados ativos enquanto o navegador do cliente estiver

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

MAC5855 - NoSQL. Mauricio De Diana mdediana@ime.usp.br @mdediana

MAC5855 - NoSQL. Mauricio De Diana mdediana@ime.usp.br @mdediana MAC5855 - NoSQL Mauricio De Diana mdediana@ime.usp.br @mdediana Web 2.0 Data is the Next Intel Inside Inteligência Coletiva Grande volume de dados Escala global (Internet scale services) Web 2.0 Alto grau

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site. Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site. Foi necessário configurar esse segundo adaptador, porque talvez seja necessário fazer o download de alguma

Leia mais

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] ) Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Programação para Dispositivos Móveis Aula 1. Prof. William Yamamoto

Programação para Dispositivos Móveis Aula 1. Prof. William Yamamoto Programação para Dispositivos Móveis Aula 1 Prof. William Yamamoto Visual Studio É uma ferramenta de desenvolvimento completa que atende praticamente a todas as plataformas de desenvolvimento, como: Web

Leia mais

Principais Comandos SQL Usados no MySql

Principais Comandos SQL Usados no MySql Principais Comandos SQL Usados no MySql O que é um SGBD? Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares)

Leia mais

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Abordagem geral Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br Em primeiro plano, deve-se escolher com qual banco de dados iremos trabalhar. Cada banco possui suas vantagens,

Leia mais

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

AJAX no GASweb. Mas e afinal, para que usamos o AJAX? Nível - Avançado AJAX no GASweb Por: Pablo Hadler AJAX (Asynchronous Javascript and XML) foi criado com o princípio de ser uma maneira rápida e otimizada de podermos fazer requisições Web, sendo esta totalmente

Leia mais

PHP Conference Brasil

PHP Conference Brasil Symfony Elton Luís Minetto Agenda O que é o Symfony Conceitos básicos Requisitos Instalação Configuração Aplicação de exemplo O que é o Symfony Symfony é um framework de desenvolvimento para PHP5. Seu

Leia mais

Leonardo Gresta Paulino Murta leomurta@gmail.com

Leonardo Gresta Paulino Murta leomurta@gmail.com Leonardo Gresta Paulino Murta leomurta@gmail.com O Que é JDBC? API de acesso a banco de dados relacional do Java Faz uso do driver provido pelo banco de dados Roda SQL (create, insert, update, etc.) no

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução App de exemplo Implementação do exemplo Testes realizados

Leia mais

Python Acessando o Banco de Dados MySQL

Python Acessando o Banco de Dados MySQL Python Acessando o Banco de Dados MySQL ANTONIO SÉRGIO NOGUEIRA PRESIDENTE PRUDENTE SP 2009 1 Sumário 1. Introdução...3 2. Interface MySQL...3 3.Instalando o MySQLdb...3 4.Verificando se o MySQL está instalado...4

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

INSTALAÇÃO PRINTERTUX Tutorial

INSTALAÇÃO PRINTERTUX Tutorial INSTALAÇÃO PRINTERTUX Tutorial 2 1. O Sistema PrinterTux O Printertux é um sistema para gerenciamento e controle de impressões. O Produto consiste em uma interface web onde o administrador efetua o cadastro

Leia mais

Manual de Instalação. Instalação via apt-get

Manual de Instalação. Instalação via apt-get Manual de Instalação Instalação via apt-get Índice de capítulos 1 - Pré-requisitos para instalação......................................... 01 2 - Instalando o SIGA-ADM.................................................

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 2

PHP INTEGRAÇÃO COM MYSQL PARTE 2 ABRIR CONEXÃO PHP INTEGRAÇÃO COM MYSQL PARTE 2 Professor: Leonardo Pereira Email: leongamerti@gmail.com Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si Antes de podermos acessar informações

Leia mais

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de gestão de conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

SQL comando SELECT. SELECT [DISTINCT] FROM [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática Bases de Dados Relacional/Objeto e NoSQL Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática SGBDs Principais tarefas Gerir grandes volumes de dados Suportar acessos eficientes Garantir

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

GUIA DE INSTALAÇÃO NETDEEP SECURE COM VMWARE WORKSTATION

GUIA DE INSTALAÇÃO NETDEEP SECURE COM VMWARE WORKSTATION GUIA DE INSTALAÇÃO NETDEEP SECURE COM VMWARE WORKSTATION GUIA DE INSTALAÇÃO NETDEEP SECURE COM VMWARE WORKSTATION 1- Visão Geral Neste manual você aprenderá a instalar e fazer a configuração inicial do

Leia mais

Fórum Internacional Software Livre 8.0. PEAR::MDB2_Schema. Igor Feghali [ifeghali@php.net]

Fórum Internacional Software Livre 8.0. PEAR::MDB2_Schema. Igor Feghali [ifeghali@php.net] Fórum Internacional Software Livre 8.0 PEAR::MDB2_Schema Igor Feghali [ifeghali@php.net] Quem sou eu? Graduando em Engenharia de Computação pela Universidade Federal do Espírito Santo (UFES) Participante

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Programação para Android. Aula 08: Persistência de dados SQL

Programação para Android. Aula 08: Persistência de dados SQL Programação para Android Aula 08: Persistência de dados SQL Persistência de dados Na maioria das aplicações precisamos ter algum tipo de persistência de dados. Para guardar informações de forma persistente

Leia mais

Projeto Amadeus. Guia de Instalação 00.95.00 Linux

Projeto Amadeus. Guia de Instalação 00.95.00 Linux Projeto Amadeus Guia de Instalação 00.95.00 Linux Agosto 2010 Sumário 1. Introdução...3 2. Pré-Requisitos...4 2.1 Máquina Virtual Java...4 2.1.1 Instalando JDK via apt-get...4 2.1.2 Instalando JDK a partir

Leia mais

INSTALANDO E CONFIGURANDO O MY SQL

INSTALANDO E CONFIGURANDO O MY SQL INSTALANDO E CONFIGURANDO O MY SQL Este tutorial tem como objetivo mostrar como instalar o banco de dados My SQL em ambiente Windows e é destinado aqueles que ainda não tiveram um contato com a ferramenta.

Leia mais

Introdução ao Sistema. Características

Introdução ao Sistema. Características Introdução ao Sistema O sistema Provinha Brasil foi desenvolvido com o intuito de cadastrar as resposta da avaliação que é sugerida pelo MEC e que possui o mesmo nome do sistema. Após a digitação, os dados

Leia mais

Profº Aldo Rocha. Banco de Dados

Profº Aldo Rocha. Banco de Dados Profº Aldo Rocha Banco de Dados HOJE! CREATE TABLE com uma Chave primária Primeiramente façam um SELECT na tabela pessoa. Percebam que não há NENHUMA CHAVE PRIMÁRIA. utilizem o comando SHOW CREATE TABLE

Leia mais

Instalando servidor Apache

Instalando servidor Apache Instalando servidor Apache Apache é um software livre de código aberto que corre mais de 50% dos servidores web do mundo. Para instalar o apache, abra um terminal e digite o comando: 1- # yum install httpd

Leia mais

Instalar Apache+PHP+MySQL no Windows 7/Vista/XP/Server 2003/2008

Instalar Apache+PHP+MySQL no Windows 7/Vista/XP/Server 2003/2008 Goiânia, 11/11/2013 Aluno: Rafael Vitor Prof. Kelly Instalar Apache+PHP+MySQL no Windows 7/Vista/XP/Server 2003/2008 O Apache é o servidor mais popular da web, foi criado em Abril de 1996 com o intuito

Leia mais

Projeto de Banco de Dados: Empresa X

Projeto de Banco de Dados: Empresa X Projeto de Banco de Dados: Empresa X Modelo de negócio: Empresa X Competências: Analisar e aplicar o resultado da modelagem de dados; Habilidades: Implementar as estruturas modeladas usando banco de dados;

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição

Leia mais

André Milani. Novatec

André Milani. Novatec André Milani Novatec Sumário Agradecimentos...19 Sobre o autor...21 Prefácio...23 Capítulo 1 Bem-vindo ao PostgreSQL...25 1.1 O que é o PostgreSQL?...25 1.1.1 História do PostgreSQL...26 1.1.2 Licença

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais