PessoALL,
Se lembram da época que meia dúzia de pessoas abriam uma empresa para criar um site na internet criando um produtinho para vender pela rede e tentar "dominar" o mundo. Parece que esta época está voltando, mas para uma outra área carente, aplicação mobile. Quantas aplicações mobile imaginamos que poderíamos vender como produto, quantas aplicações existem atualmente que sejam interessantes ?
Outra facilidade é o mercado que podemos atingir que gira em torno de 120 milhões, daqui a pouco os recém nascidos vão ganhar um celular ao acabar de sair de suas mães.
O grande desafio é ter uma aplicação que ao mesmo tempo rode em um número maior de tipos de terminais e utilize o máximo de recursos que a plataforma nos fornece. Por isso, as 3 grandes de telefonia em um evento na Espanha (Telefonica + TIM, Portugal Telecom e America Movil) estão se juntando para criar uma plataforma e canal de sitribuição que facilite a nossa vida, mas também combater principalmente a Apple (iPhone) e Android que comercializam milhões através de seus canais proprietários e não repassam nada para as operadoras (no meu ponto de vista as operadoras tinham que ganhar sobre a utilização da rede).
Existem várias forças nas operadoras e fabricantes de celular para primeiramente combater a Apple e sua Apple store criando várias aplicações para tentar diminuir o gap entre os celulares, não sei o que isso vai dar mas a briga é boa. Se eu fosse conselheiro na Apple o que falaria seria todos que tentaram dominar o mundo se deram mal, ou seja, provavelmente você será mais um.
Outra coisa importante é que cada vez os celulares vão ser barateados, principalmente por causa da pressão chinesa e cada vez estão mais rápidos em processamento e transmissão de dados.
Vamos nos ligar nas oportunidades pois isso acontece a cada 10 anos, que todos estejam preparados.
Segue uns vídeos/links interessantes
Vivo campus party
http://www.youtube.com/campusparty
http://www.youtube.com/watch?v=U8Sf2g26FEM
http://www.youtube.com/watch?v=f0kKn7NUv_g
Terminais
http://odia.terra.com.br/portal/digital/html/2010/4/vivo_lanca_celular_zte_com_tv_digital_por_r_199_75472.html
http://www.gizmodo.com.br/conteudo/htc-evo-4g-e-forte-candidato-ao-titulo-de-melhor-telefone-celular
Veja
"10% das empresas listadas no ranking global Fortune 2000 já lançaram aplicativos para smartphones, segundo a consultoria research2guidance. Esta empresa estima que o mercado de aplicativos móveis cresça 807% nos próximos quatro anos, passando de 1,411 bilhões de euros em 2010 para 11,496 bilhões de euros em 2013.
A pesquisa realizada pela Mowa avaliou que o setor com maior presença móvel é a indústria de Telecomunicações: 31,25% das empresas deste segmento possuem iniciativas nas três frentes avaliadas. Em seguida aparecem as áreas de Eletroeletrônicos (26,32%), Farmacêutica (10%), Indústria Digital (9%) e Automotiva (7,7%)."
sábado, 17 de abril de 2010
terça-feira, 13 de abril de 2010
testes de performance mysql com engine=memory
PessoALL,
Estava testando o uso da persistência in memory do mysql e fiquei muito impressionado com os valores alcançados. Segue eles.
A única coisa ruim é que a mesma não guarda os dados, mas para isso estou colocando e uma base MyISam que é alimentada após a postagem de uma mensagem no apache activemq (em torno de 3.000 tps) por nó. E no reestart do mysql recoloco os dados na memória.
tempo de insert para 40 milhoes de linhas (procedure) - 9 min - 74.000 tps
tempo para 40 milhoes de consultas aleatorias pela PK - 21 min - 31.000 tps
tempo para 40 milhoes de atualizacoes - 17 min - 39.000 tps
Segue o sql
SET max_heap_table_size = 10000000000;
CREATE TABLE tb_sico (cd_ip_addr_v4 char(11)not null, cd_mdn char(12) not null, INDEX USING HASH (cd_ip_addr_v4), INDEX USING HASH (cd_mdn)) ENGINE = MEMORY;
drop procedure prc_popula_sico;
delimiter $$
create procedure prc_popula_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
SELECT V_CONTADOR_MAXIMO-count(1)
into V_CONTADOR_MAXIMO
from tb_sico;
insert_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE insert_loop;
END IF;
insert into tb_sico values (V_CONTADOR,V_CONTADOR);
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'carga', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP insert_loop;
END
$$
delimiter ;
delimiter ;
drop procedure prc_verifica_sico;
delimiter $$
create procedure prc_verifica_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_COUNT int DEFAULT 0;
select_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE select_loop;
END IF;
SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;
SELECT count(1)
into V_COUNT
from tb_sico
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'verifica', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP select_loop;
END
$$
delimiter ;
delimiter ;
drop procedure prc_atualiza_sico;
delimiter $$
create procedure prc_atualiza_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_CD_MDN CHAR(12);
update_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE update_loop;
END IF;
SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;
SET V_CD_MDN = V_RANDOM;
update tb_sico
set cd_mdn = V_CD_MDN
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'atualiza', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP update_loop;
END
$$
delimiter ;
Estava testando o uso da persistência in memory do mysql e fiquei muito impressionado com os valores alcançados. Segue eles.
A única coisa ruim é que a mesma não guarda os dados, mas para isso estou colocando e uma base MyISam que é alimentada após a postagem de uma mensagem no apache activemq (em torno de 3.000 tps) por nó. E no reestart do mysql recoloco os dados na memória.
tempo de insert para 40 milhoes de linhas (procedure) - 9 min - 74.000 tps
tempo para 40 milhoes de consultas aleatorias pela PK - 21 min - 31.000 tps
tempo para 40 milhoes de atualizacoes - 17 min - 39.000 tps
Segue o sql
SET max_heap_table_size = 10000000000;
CREATE TABLE tb_sico (cd_ip_addr_v4 char(11)not null, cd_mdn char(12) not null, INDEX USING HASH (cd_ip_addr_v4), INDEX USING HASH (cd_mdn)) ENGINE = MEMORY;
drop procedure prc_popula_sico;
delimiter $$
create procedure prc_popula_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
SELECT V_CONTADOR_MAXIMO-count(1)
into V_CONTADOR_MAXIMO
from tb_sico;
insert_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE insert_loop;
END IF;
insert into tb_sico values (V_CONTADOR,V_CONTADOR);
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'carga', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP insert_loop;
END
$$
delimiter ;
delimiter ;
drop procedure prc_verifica_sico;
delimiter $$
create procedure prc_verifica_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_COUNT int DEFAULT 0;
select_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE select_loop;
END IF;
SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;
SELECT count(1)
into V_COUNT
from tb_sico
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'verifica', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP select_loop;
END
$$
delimiter ;
delimiter ;
drop procedure prc_atualiza_sico;
delimiter $$
create procedure prc_atualiza_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_CD_MDN CHAR(12);
update_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE update_loop;
END IF;
SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;
SET V_CD_MDN = V_RANDOM;
update tb_sico
set cd_mdn = V_CD_MDN
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;
SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'atualiza', now();
SET V_CONTADOR_BLOCO = 0;
END IF;
SET V_CONTADOR = V_CONTADOR + 1;
END LOOP update_loop;
END
$$
delimiter ;
quarta-feira, 7 de abril de 2010
open ldap no Redhat AS 5
-------------
-- Berkley DB
cd /root/
wget http://download.oracle.com/berkeley-db/db-4.6.21.zip
unzip db-4.6.21.zip
cd db-4.6.21
cd build_unix/
./dist/configure
make
make install
cd /root
rm -rf /root/db-4.6.21
----------------
-- OPEN LDAP
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.21.tgz
tar zxvf openldap-2.4.21.tgz
cd openldap-2.4.21
export CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include"
export LDFLAGS="-L/usr/local/BerkeleyDB.4.6/lib -R/usr/local/BerkeleyDB.4.6/lib"
export LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.6/lib:${LD_LIBRARY_PATH}"
./configure --with-whatever-your-options
make
make install
cd /root
rm -rf /root/openldap-2.4.21
----------------
-- CONFIG
vi /usr/local/etc/openldap/slapd.conf
----------------
-- start LDAP
su root -c /usr/local/libexec/slapd
-- Berkley DB
cd /root/
wget http://download.oracle.com/berkeley-db/db-4.6.21.zip
unzip db-4.6.21.zip
cd db-4.6.21
cd build_unix/
./dist/configure
make
make install
cd /root
rm -rf /root/db-4.6.21
----------------
-- OPEN LDAP
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.21.tgz
tar zxvf openldap-2.4.21.tgz
cd openldap-2.4.21
export CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include"
export LDFLAGS="-L/usr/local/BerkeleyDB.4.6/lib -R/usr/local/BerkeleyDB.4.6/lib"
export LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.6/lib:${LD_LIBRARY_PATH}"
./configure --with-whatever-your-options
make
make install
cd /root
rm -rf /root/openldap-2.4.21
----------------
-- CONFIG
vi /usr/local/etc/openldap/slapd.conf
----------------
-- start LDAP
su root -c /usr/local/libexec/slapd
Assinar:
Comentários (Atom)