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:// 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 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: 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: 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

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

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

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

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

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

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

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

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na 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

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

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

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

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

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Criando Banco de Dados, Tabelas e Campos através do HeidiSQL Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 2 Pedreiros da Informação Criando Banco de Dados, Tabelas e Campos através do HeidiSQL

Leia mais

http://www.multside.com.br CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

http://www.multside.com.br CODE IGNITER INSTALAÇÃO & BANCO DE DADOS CODE IGNITER INSTALAÇÃO & BANCO DE DADOS INSTALAÇÃO Instalar o code-igniter é muito simples, basta que você tenha um servidor que rode PHP 5 (para saber consulte a documentação PHP do seu servidor). Após

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,

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

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

Google Drive: Acesse e organize seus arquivos

Google Drive: Acesse e organize seus arquivos Google Drive: Acesse e organize seus arquivos Use o Google Drive para armazenar e acessar arquivos, pastas e documentos do Google Docs onde quer que você esteja. Quando você altera um arquivo na web, no

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

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Manual de Instalação e Configuração do SQL Express

Manual de Instalação e Configuração do SQL Express Manual de Instalação e Configuração do SQL Express Data alteração: 19/07/11 Pré Requisitos: Acesse o seguinte endereço e faça o download gratuito do SQL SRVER EXPRESS, conforme a sua plataforma x32 ou

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: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006.

PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006. PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006. Veja como montar um formulário para upload de múltiplos arquivos e como processá-lo com o PHP, usando

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

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

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

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

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER V14 de BricsCAD vem com um novo sistema de licenciamento, com base na tecnologia de licenciamento de Reprise Software. Este novo sistema oferece um ambiente

Leia mais

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [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

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4. Diego M. Rodrigues (diego@drsolutions.com.br) O NTOP é um programa muito simples de ser instalado e não requer quase nenhuma configuração. Ele é capaz de gerar excelentes gráficos de monitoramento das

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

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Ele considera que você já tem o Joomla! instalado no seu computador. Caso você queira utilizá lo em um servidor na web,

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

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

LABORATÓRIO WIRESHARK: DNS

LABORATÓRIO WIRESHARK: DNS LABORATÓRIO WIRESHARK: DNS Conforme descrito na seção 2.5 do livro, o Domain Name System (DNS) traduz nomes de hosts para endereços IP, cumprindo um papel fundamental na infra-estrutura da Internet. Neste

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Organização do Curso. Instalação e Configuração. Módulo II. Pós Graduação em Projeto e Gerencia de Redes de Computadores

Organização do Curso. Instalação e Configuração. Módulo II. Pós Graduação em Projeto e Gerencia de Redes de Computadores 1 Pós Graduação em Projeto e Gerencia de Redes de Computadores Sistemas Operacionais de Redes I - Linux Prof.: Nelson Monnerat Instalação e Configuração 1 Sistemas Operacionais de Redes I - Linux Módulo

Leia mais

MySQL Query Browser. Professor Victor Sotero SGD

MySQL Query Browser. Professor Victor Sotero SGD MySQL Query Browser Professor Victor Sotero SGD 1 DEFINIÇÃO O MySQL Query Browser é uma ferramenta gráfica fornecida pela MySQL AB para criar, executar e otimizar solicitações SQL em um ambiente gráfico.

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

CRIANDO UM BANCO DE DADOS

CRIANDO UM BANCO DE DADOS CRIANDO UM BANCO DE DADOS Bem, antes de iniciarmos propriamente no delphi, devemos aprender a usar sua ferramentas, sendo uma das mais importantes o Database Desktop, pois é com esta que construímos nossos

Leia mais

2 de maio de 2014. Remote Scan

2 de maio de 2014. Remote Scan 2 de maio de 2014 Remote Scan 2014 Electronics For Imaging. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste produto. Conteúdo 3 Conteúdo...5 Acesso ao...5

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Instalando o WordPress em localhost

Instalando o WordPress em localhost Instalando o WordPress em localhost WordPress sem Mistério LEE ARAUJO htto://wordpresssemmisterio.com.br Sumário Instalando o WordPress em Localhost... 2 O Servidor web... 3 Iniciando o servidor... 6 Criação

Leia mais

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon Trabalho de Sistema de Informações Aluno: Paulo Roberto Carvalho da Silva Instalação e configuração aplicativo Ocomon O trabalho tem como objetivo o estudo de caso,a instalação, configuração e funcionamento

Leia mais

Omega Tecnologia Manual Omega Hosting

Omega Tecnologia Manual Omega Hosting Omega Tecnologia Manual Omega Hosting 1 2 Índice Sobre o Omega Hosting... 3 1 Primeiro Acesso... 4 2 Tela Inicial...5 2.1 Área de menu... 5 2.2 Área de navegação... 7 3 Itens do painel de Controle... 8

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET Programação para Internet I Aula 10 PHP: Trabalhando com Banco de Dados leticia@cafw.ufsm.br Acessando

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

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

No Fedora, instalamos os pacotes mysql e mysql-server, usando o yum: Instalando o MySQL O MySQL é um banco de dados extremamente versátil, usado para os mais diversos fins. Você pode acessar o banco de dados a partir de um script em PHP, através de um aplicativo desenvolvido

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

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

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

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados Módulo e-rede OpenCart v1.0 Manual de Instalação do Módulo estamos todos ligados ÍNDICE 01 02 03 04 Introdução 3 Versão 3 Requerimentos 3 Manual de instalação 4 05 06 4.1 vqmod 4 4.2 Instalação e ativação

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos Este procedimento corresponde ao fluxo de trabalho de Indexação de código de barras e de separação de documentos no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se

Leia mais

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira www.linksinfo.com.br Tutorial versão 1.0 Sobre o Logic basic: Parte 1 Sobre o Logic Basic e o SQL O Logic Basic é uma linguagem de programação

Leia mais

INTRODUÇÃO: 1 - Conectando na sua conta

INTRODUÇÃO: 1 - Conectando na sua conta INTRODUÇÃO: Com certeza a reação da maioria dos que lerem esse mini manual e utilizarem o servidor vão pensar: "mas porque eu tenho que usar um console se em casa eu tenho uma interface gráfica bonito

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

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

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG Página 1 de 26 Sumário Introdução...3 Layout do Webmail...4 Zimbra: Nível Intermediário...5 Fazer

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

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

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

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Sumário Objetivos do Blog... 2 Log-in... 3 Esqueci minha senha... 4 Utilizando o Blog... 5 Encontrando seu Blog... 5 Conhecendo o

Leia mais

Programa EndNote. Download para teste no site: http://www.endnote.com/endemo.asp. (Atualmente o EndNote está na versão 5x)

Programa EndNote. Download para teste no site: http://www.endnote.com/endemo.asp. (Atualmente o EndNote está na versão 5x) Programa EndNote 1. Informações O EndNote é um gerenciador de referências bibliográficas desenvolvido pela Thomson Reuters. O software permite armazenar e organizar as referências encontradas nas buscas

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

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon MDaemon GroupWare plugin para o Microsoft Outlook Trabalhe em Equipe Usando o Outlook e o MDaemon Versão 1 Manual do Usuário MDaemon GroupWare Plugin for Microsoft Outlook Conteúdo 2003 Alt-N Technologies.

Leia mais

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1 TUTORIAL PRÁTICO SOBRE Git por Djalma Oliveira Versão 1.1 "Git é um sistema de controle de revisão distribuida, rápido e escalável" (tradução rápida do manual). Basicamente é

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

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

Ambiente Virtual de Aprendizagem Moodle

Ambiente Virtual de Aprendizagem Moodle Ambiente Virtual de Aprendizagem Moodle No INSEP, o ambiente virtual de aprendizagem oferecido ao acadêmico é o MOODLE. A utilização dessa ferramenta é fundamental para o sucesso das atividades em EAD,

Leia mais

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados Módulo e-rede OpenCart v1.0 Manual de Instalação do Módulo estamos todos ligados 01 02 03 04 Introdução 3 Versão 3 Requerimentos 3 Manual de instalação 4 05 06 4.1 vqmod 4 4.2 Instalação e ativação do

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

MANUAL DE UTILIZAÇÃO. HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0)

MANUAL DE UTILIZAÇÃO. HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0) MANUAL DE UTILIZAÇÃO HELP SUPORTE e HELP - REMOTO (Versão de usuário: 2.0) 1 Sumário 1 Introdução...3 2 O que é o HELP Suporte?...3 3 Cadastro no Help Suporte...3 4 Como Acessar e Utilizar o HELP SUPORTE...3

Leia mais

Manual de Instalação EDIÇÃO 1.0

Manual de Instalação EDIÇÃO 1.0 Editor Rápido ipldk Manual de Instalação EDIÇÃO 1.0 HISTÓRICO DE REVISÃO Edição Data Descrição das Alterações Versão S/W Versão MPB Edição 1 Out/2006 Lançamento Inicial C.7Aa ~ C.7Aa - i - Conteúdo 1.

Leia mais

HOW TO. Instalação do Firewall 6.1 Software

HOW TO. Instalação do Firewall 6.1 Software Introdução HOW TO Página: 1 de 14 Para fazer a migração/instalação do 6.1 Software, é necessária a instalação do Sistema Operacional Linux Fedora Core 8. Explicaremos passo a passo como formatar a máquina,

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

AUXÍLIO COMPUTACIONAL

AUXÍLIO COMPUTACIONAL AUXÍLIO COMPUTACIONAL Sumário 1 Introdução...1 2 Sistema Operacional...1 2.1 Usando o Linux - no seu PenDrive...2 2.2 Usando o Linux - instalado no seu HD...4 2.3 Instalando Softwares Diretamente...4 2.3.1

Leia mais

Como instalar uma impressora?

Como instalar uma impressora? Como instalar uma impressora? Antes de utilizar uma impressora para imprimir seus documentos, arquivos, fotos, etc. é necessário instalá-la e configurá-la no computador. Na instalação o computador se prepara

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

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? Exercícios sobre Linguagem PHP: 1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? 2) Considere a linguagem de programação PHP e seus operadores. A execução da sentença:

Leia mais

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Instalando o Lazarus e outros sistemas de suporte Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 1 Levante e ande - Instalando o Lazarus e outros sistemas de suporte. Ano: 02/2011 Nesta Edição

Leia mais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.

Leia mais

Atualizaça o do Maker

Atualizaça o do Maker Atualizaça o do Maker Prezados Clientes, Nós da Playlist Software Solutions empresa líder de mercado no desenvolvimento de software para automação de rádios - primamos pela qualidade de nossos produtos,

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

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

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

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

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software 2 Introdução Este manual foi elaborado para administradores, para entendimento do funcionamento do produto e administração

Leia mais