SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
PHP e CASSANDRA
Ivan Rosolen
Graduado em Sistemas de Informação
Pós-graduado em Gerência de Projetos
Desenvolvedor a 10+ anos
Autor de vários PHPT (testes para o PHP)

Gerente de Projetos na

Arizona
CASSANDRA
O que? De onde? Quem?
NoSQL
Amazon Dynamo
Google Big Table

Facebook
Pontos Positivos
- Alta escalabilidade e disponibilidade
- Sem um único ponto de falha
- Baseado em colunas (wide-column)
- Rendimento de escrita muito alto
- Rendimento de leitura bom
- Consistência ajustável e suporte a replicação
Colunas
- Modelar os dados do jeito que você vai buscar, desnormalizado

[KeySpace][ColumnFamily][Key][SuperColumn][SubColumn]
Database = [KeySpace]
Tabela

= [ColumnFamily]

Linha

= [Key]

Valores = [Column][SuperColumn][SubColumn]
Keyspace 1
Column Family 1

RowKey 1

Name
Value
Timestamp

Name
Value
Timestamp

Name
Value
Timestamp

RowKey 2

Name
Value
Timestamp

Name
Value
Timestamp

Name
Value
Timestamp
Cases
NoSQL at Netflix

http://goo.gl/dtkRw1
2011 Cassandra SF: Cassandra at Twitter Presentation

http://goo.gl/Z6akmx
C* Summit 2013: Cassandra at Instagram

http://goo.gl/UtCMH9
Mais...
http://www.planetcassandra.org/Company/ViewCompany
Devo Usar?
- Algum outro NoSQL não aguentou (MongoDB)
- Precisa de um modelo de dados mais rebuscado?
- Precisa de uma escrita ABSURDA?
- Está disposto a reformular sua aplicação?
As vezes muito trabalhoso dependendo da arquitetura

- Está disposto a gastar $$?
PHP
Dependências
Cassandra
http://cassandra.apache.org
- Não recomendado usar o java 7 ou o OpenJDK
- Oracle Java SE Runtime Environment (JRE) 6
- Apache disponibiliza “binary tarballs” e “Debian
packages”
- Java Native Access (JNA) é necessário para
servidores de produção pois melhora a utilização
de memória do Cassandra
- Cassandra-Cli
- CQL - Cassandra Query Language
http://cassandra.apache.org/doc/cql/CQL.html
Criando
cassandra-cli
create keyspace Palestra
with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'
and strategy_options = {replication_factor:1};
use Palestra;
create column family Users;

cqlsh
cqlsh:demo> select * from “Users”;
Thrift
http://thrift.apache.org
- Habilitar APC para melhor performace
- Dependências / Install
http://thrift.apache.org/docs/install/

- Módulo nativo do PHP (phpize)
cd ext/thrift_protocol
phpize
./configure
make
sudo make install
PHPCassa
- Compatível com Cassandra 0.7 até 1.2
- PHP 5.3+
- CQL 2.0
Links
https://github.com/thobbs/phpcassa
https://groups.google.com/forum/#!forum/phpcassa
http://thobbs.github.io/phpcassa/
http://itsallabtamil.blogspot.com.br/2012/03/cassandra-phpcassa-composite-types.html
http://www.fuzzy.cz/en/articles/php-and-cassandra-twissandra/
Criando
<?php
require_once(__DIR__.'/../lib/autoload.php');
use phpcassaConnectionConnectionPool;
use phpcassaColumnFamily;
use phpcassaSystemManager;
use phpcassaSchemaStrategyClass;
$sys = new SystemManager('127.0.0.1');
$sys->create_keyspace('Palestra', array(
"strategy_class" => StrategyClass::SIMPLE_STRATEGY,
"strategy_options" => array('replication_factor' => '1')));
$sys->create_column_family('Palestra', 'Users');
$sys->close();
Sem PHPCassa
<?php
$GLOBALS['THRIFT_ROOT'] = '/usr/share/php/Thrift';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/cassandra_types.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
try {
$socket = new TSocket('127.0.0.1', 9160);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol = new TBinaryProtocolAccelerated($transport);
$client = new CassandraClient($protocol);
$transport->open();
$keyspace = 'Palestra';
$keyUserId = "user0";
$columnPath = new cassandra_ColumnPath();
$columnPath->column_family = 'Users';
$columnPath->super_column = null;
$columnPath->column = 'email';
$timestamp = time();
$consistency_level = cassandra_ConsistencyLevel::ZERO;
$value = 'user@email.com';
$client->insert($keyspace, $keyUserId, $columnPath, $value, $timestamp, $consistency_level);
$transport->close();
} catch (TException $tx) {
print 'TException: '.$tx->why. ' Error: '.$tx->getMessage() . "n";
}
Com PHPCassa
<?php
require_once(__DIR__.'/../lib/autoload.php');
use phpcassaConnectionConnectionPool;
use phpcassaColumnFamily;
$pool = new ConnectionPool('Palestra', array('127.0.0.1'));
$users = new ColumnFamily($pool, 'Users');
$users->insert('user0', array("email" => "user@email.com"));
$pool->close();
<?php
require_once(__DIR__.'/../lib/autoload.php');
use phpcassaConnectionConnectionPool;
$servers = array(“192.168.229.170:9160”,”192.168.229.171:9160”,”192.168.229.172:9160);
$pool

= new ConnectionPool ('Palestra',$servers);

$pool->close();
$sys = new SystemManager('127.0.0.1');
$pool = new ConnectionPool('Palestra', array('127.0.0.1'));
$users = new ColumnFamily($pool, 'Users');
$users->truncate();
$sys->drop_keyspace("Palestra");
$pool->close();
$sys->close();
Insert e Batch Insert
$users->insert('user0', array("name" => "ivan", "state" => "SP"));
$users->insert('user1', array("name" => "elton", "state" => "SC"));

$users->batch_insert(array("user3" => array("name" => "er"),
vvvvvvvvvvv"user4" => array("name" => "calvin")));
Select e Multi Select
$user = $users->get('user0');
$name = $user["name"];
echo "Nome do usuário $namen";

$columnNames = array('name', 'state');
$user = $users->get('user0',$column_slice = null, $column_names=$columnNames);
$many = $users->multiget(array('user0', 'user1'));
foreach($many as $user_id => $columns) {
echo "Estado do $user_id: ".$columns["state"]."n";
}

$users->get_count('user0');
// retorna 2
Where e Limit
<?php
require_once(__DIR__.'/../lib/autoload.php');
use phpcassaConnectionConnectionPool;
use phpcassaColumnFamily;
use phpcassaColumnSlice;
$pool = new ConnectionPool('Palestra', array('127.0.0.1'));
$letters = new ColumnFamily($pool, 'Letras');
$columns = array(1 => "a", 2 => "b", 3 => "c", 4 => "d", 5 => "e");
$letters->insert('linha', $columns);
…….
$pool->close();
// Where >= 2
$slice = new ColumnSlice(2);
print_slice($letters->get('linha', $slice));
// Between 2 and 4
$slice = new ColumnSlice(2, 4);
print_slice($letters->get('linha', $slice));
// Limit 3
$slice = new ColumnSlice('', '', $count=3);
print_slice($letters->get('linha', $slice));
// 3 últimas
$slice = new ColumnSlice('', '', $count=3, $reversed=true);
print_slice($letters->get('linha', $slice));
// 2 últimas antes do 4
$slice = new ColumnSlice(4, '', $count=2, $reversed=true);
print_slice($letters->get('linha', $slice));
Delete
<?php
require_once(__DIR__.'/../lib/autoload.php');
use phpcassaConnectionConnectionPool;
use phpcassaColumnFamily;
$pool = new ConnectionPool('Palestra', array('127.0.0.1'));
$users = new ColumnFamily($pool, 'Users');
$users->remove("user4");
$users>remove("user0", array("state"));
$users->truncate();
$pool->close();
Referências / Links
Planet Cassandra
http://www.planetcassandra.org/

Cassandra Summit 2013
http://www.youtube.com/watch?v=Qz6ElTdYjjU&list=PLqcm6qE9lgKJzVvwHprow9h7KMpb5hcUU

Using Cassandra with PHP
https://pressflow.atlassian.net/wiki/display/PF/Using+Cassandra+with+PHP

DataStax
http://www.datastax.com/docs

DataStax Data modeling
http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_anatomy_table_c.html

Apache Cassandra Wiki
http://wiki.apache.org/cassandra/ArticlesAndPresentations

Quadrinho de como o Cassandra Funciona
http://blogs.atlassian.com/2013/09/do-you-know-cassandra

Pandra
https://github.com/mjpearson/Pandra

Cassandra PHP Client Library
https://github.com/kallaspriit/Cassandra-PHP-Client-Library/

Cassandra PDO
https://github.com/Orange-OpenSource/YACassandraPDO

Contenu connexe

Tendances

Advanced modulinos
Advanced modulinosAdvanced modulinos
Advanced modulinosbrian d foy
 
Advanced modulinos trial
Advanced modulinos trialAdvanced modulinos trial
Advanced modulinos trialbrian d foy
 
Apostrophe
ApostropheApostrophe
Apostrophetompunk
 
16.mysql stored procedures in laravel
16.mysql stored procedures in laravel16.mysql stored procedures in laravel
16.mysql stored procedures in laravelRazvan Raducanu, PhD
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven DevelopmentAugusto Pascutti
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Kris Wallsmith
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Jakub Zalas
 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War StoriesJakub Zalas
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hackingJeroen van Dijk
 
Symfony As A Platform (Symfony Camp 2007)
Symfony As A Platform (Symfony Camp 2007)Symfony As A Platform (Symfony Camp 2007)
Symfony As A Platform (Symfony Camp 2007)Fabien Potencier
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressJeroen van Dijk
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hackingJeroen van Dijk
 
Parsing JSON with a single regex
Parsing JSON with a single regexParsing JSON with a single regex
Parsing JSON with a single regexbrian d foy
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressJeroen van Dijk
 

Tendances (20)

Advanced modulinos
Advanced modulinosAdvanced modulinos
Advanced modulinos
 
Advanced modulinos trial
Advanced modulinos trialAdvanced modulinos trial
Advanced modulinos trial
 
Apostrophe
ApostropheApostrophe
Apostrophe
 
Bag of tricks
Bag of tricksBag of tricks
Bag of tricks
 
16.mysql stored procedures in laravel
16.mysql stored procedures in laravel16.mysql stored procedures in laravel
16.mysql stored procedures in laravel
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven Development
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12
 
Perl5i
Perl5iPerl5i
Perl5i
 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War Stories
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
Symfony As A Platform (Symfony Camp 2007)
Symfony As A Platform (Symfony Camp 2007)Symfony As A Platform (Symfony Camp 2007)
Symfony As A Platform (Symfony Camp 2007)
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
Parsing JSON with a single regex
Parsing JSON with a single regexParsing JSON with a single regex
Parsing JSON with a single regex
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
 
Perl basics for Pentesters
Perl basics for PentestersPerl basics for Pentesters
Perl basics for Pentesters
 
My shell
My shellMy shell
My shell
 
PHP pod mikroskopom
PHP pod mikroskopomPHP pod mikroskopom
PHP pod mikroskopom
 
Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3
 

En vedette

Criando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework RespectCriando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework RespectIvan Rosolen
 
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQL
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQLDesenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQL
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQLOtávio Santana
 
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Diana Ungaro Arnos
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...James Titcumb
 
Espírito de Comunidade
Espírito de ComunidadeEspírito de Comunidade
Espírito de ComunidadeAirton Zanon
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQNelson Senna do Amaral
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016Alexandre Brandão Lustosa
 

En vedette (10)

Criando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework RespectCriando APIs usando o micro-framework Respect
Criando APIs usando o micro-framework Respect
 
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQL
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQLDesenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQL
Desenvolvendo com NOSQL ­ Cassandra em Java: Parte 1 ­ Conceito NOSQL
 
PHPT
PHPTPHPT
PHPT
 
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
 
Espírito de Comunidade
Espírito de ComunidadeEspírito de Comunidade
Espírito de Comunidade
 
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQTirando o coelho da cartola: integrando sistemas com RabbitMQ
Tirando o coelho da cartola: integrando sistemas com RabbitMQ
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
 

Similaire à Php e Cassandra

Open Source Search: An Analysis
Open Source Search: An AnalysisOpen Source Search: An Analysis
Open Source Search: An AnalysisJustin Finkelstein
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesDave Stokes
 
Wordcamp Fayetteville Pods Presentation (PDF)
Wordcamp Fayetteville Pods Presentation (PDF)Wordcamp Fayetteville Pods Presentation (PDF)
Wordcamp Fayetteville Pods Presentation (PDF)mpvanwinkle
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applicationselliando dias
 
Manchester Hadoop Meetup: Spark Cassandra Integration
Manchester Hadoop Meetup: Spark Cassandra IntegrationManchester Hadoop Meetup: Spark Cassandra Integration
Manchester Hadoop Meetup: Spark Cassandra IntegrationChristopher Batey
 
Reading Cassandra Meetup Feb 2015: Apache Spark
Reading Cassandra Meetup Feb 2015: Apache SparkReading Cassandra Meetup Feb 2015: Apache Spark
Reading Cassandra Meetup Feb 2015: Apache SparkChristopher Batey
 
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Cliff Seal
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraDeependra Ariyadewa
 
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014Cliff Seal
 
The Zen of Lithium
The Zen of LithiumThe Zen of Lithium
The Zen of LithiumNate Abele
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Andrew Shitov
 

Similaire à Php e Cassandra (20)

PHP and Cassandra
PHP and CassandraPHP and Cassandra
PHP and Cassandra
 
Open Source Search: An Analysis
Open Source Search: An AnalysisOpen Source Search: An Analysis
Open Source Search: An Analysis
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
 
Php 101: PDO
Php 101: PDOPhp 101: PDO
Php 101: PDO
 
Php summary
Php summaryPhp summary
Php summary
 
Cassandra-Powered Distributed DNS
Cassandra-Powered Distributed DNSCassandra-Powered Distributed DNS
Cassandra-Powered Distributed DNS
 
Wordcamp Fayetteville Pods Presentation (PDF)
Wordcamp Fayetteville Pods Presentation (PDF)Wordcamp Fayetteville Pods Presentation (PDF)
Wordcamp Fayetteville Pods Presentation (PDF)
 
Scala in Places API
Scala in Places APIScala in Places API
Scala in Places API
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applications
 
Cli deep dive
Cli deep diveCli deep dive
Cli deep dive
 
Manchester Hadoop Meetup: Spark Cassandra Integration
Manchester Hadoop Meetup: Spark Cassandra IntegrationManchester Hadoop Meetup: Spark Cassandra Integration
Manchester Hadoop Meetup: Spark Cassandra Integration
 
Reading Cassandra Meetup Feb 2015: Apache Spark
Reading Cassandra Meetup Feb 2015: Apache SparkReading Cassandra Meetup Feb 2015: Apache Spark
Reading Cassandra Meetup Feb 2015: Apache Spark
 
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
 
Php hacku
Php hackuPhp hacku
Php hacku
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and Cassandra
 
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
 
Fatc
FatcFatc
Fatc
 
The Zen of Lithium
The Zen of LithiumThe Zen of Lithium
The Zen of Lithium
 
Php Mysql
Php Mysql Php Mysql
Php Mysql
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6
 

Plus de Ivan Rosolen

15 mandamentos de um bom programador
15 mandamentos de um bom programador15 mandamentos de um bom programador
15 mandamentos de um bom programadorIvan Rosolen
 
Utilizando Filas com PHP
Utilizando Filas com PHPUtilizando Filas com PHP
Utilizando Filas com PHPIvan Rosolen
 
Boas Práticas com PHP
Boas Práticas com PHPBoas Práticas com PHP
Boas Práticas com PHPIvan Rosolen
 
Mercado de Tecnologia
Mercado de TecnologiaMercado de Tecnologia
Mercado de TecnologiaIvan Rosolen
 
Deploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no JelasticDeploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no JelasticIvan Rosolen
 
Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)Ivan Rosolen
 
Tecnologias e Inovação
Tecnologias e InovaçãoTecnologias e Inovação
Tecnologias e InovaçãoIvan Rosolen
 
Cassandra 7 masters
Cassandra 7 mastersCassandra 7 masters
Cassandra 7 mastersIvan Rosolen
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoIvan Rosolen
 
Case: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flowCase: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flowIvan Rosolen
 

Plus de Ivan Rosolen (15)

15 mandamentos de um bom programador
15 mandamentos de um bom programador15 mandamentos de um bom programador
15 mandamentos de um bom programador
 
Utilizando Filas com PHP
Utilizando Filas com PHPUtilizando Filas com PHP
Utilizando Filas com PHP
 
Filas com php
Filas com phpFilas com php
Filas com php
 
Boas Práticas com PHP
Boas Práticas com PHPBoas Práticas com PHP
Boas Práticas com PHP
 
Mercado de Tecnologia
Mercado de TecnologiaMercado de Tecnologia
Mercado de Tecnologia
 
Deploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no JelasticDeploy automatizado de Aplicações no Jelastic
Deploy automatizado de Aplicações no Jelastic
 
Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)Autenticação com Json Web Token (JWT)
Autenticação com Json Web Token (JWT)
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
 
Tecnologias e Inovação
Tecnologias e InovaçãoTecnologias e Inovação
Tecnologias e Inovação
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
 
Jelastic
JelasticJelastic
Jelastic
 
Aws video creator
Aws video creatorAws video creator
Aws video creator
 
Cassandra 7 masters
Cassandra 7 mastersCassandra 7 masters
Cassandra 7 masters
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucesso
 
Case: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flowCase: PHP como Base de Digital Asset Management – arizona.flow
Case: PHP como Base de Digital Asset Management – arizona.flow
 

Dernier

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Dernier (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Php e Cassandra