Arquivo da tag: dados

Que banco de dados as grandes empresas usam?

Olá pessoal,

Recentemente analisando alguns sites de busca fiquei me perguntando sobre qual banco de dados esses sites com milhões de acesso utilizam hoje. Digo hoje porque temos uma enorme variedade de opções, seja banco relacional ou NoSQL.

Após uma boa pesquisa cheguei a alguns resultados bem interessantes:

Facebook: MySQL, Cassandra, Memcached
REF1, REF2, REF3 e REF4
Google: BitTable, MySQL, MegaStore
REF1, REF2 e REF3
TripAdvisor: MySQL, SQL Server
REF1
FourSquare: MongoDB
REF1
Twitter: MySQL, FlockDB, Memcache, Cassandra, Gizzard, Lucene, HBase/Hadoop, Redis
REF1 e REF2
Quora: MySQL
REF1
OpenStreetMaps: MySQL(no passado, mas migrou) PostgreSQL(de 19 de abril 2009 para cá)
REF1 e REF2
Dropbox: MySQL, Memcached
REF1 e REF2
Wikipedia: MySQL(no passado), MariaDB(hoje), Memcached
REF1 e REF2

 

Como ficou bem claro, o MySQL ainda está na maioria dos lugares. As empresas com engenheiros mais fortes acabam criando um fork do MySQL para torná-lo mais eficiente com os seus requisitos.

 

Obrigado e até o próximo post pessoal.

Golang – Novo projeto opensource chamado Gonotin

Olá,

Recentemente necessitamos fazer uma comparação de arquivos para saber se os números de telefone de uma base existiam em outra e depois de várias tentativas para achar a quantidade correta de registros, eu desenvolvi alguns scripts para fazer essa comparação independente da ordem dos dados e realizando a comparação um a um.

Inicialmente fiz em PHP, porém usando a função IN_ARRAY, notei que a performance estava péssima. Com um arquivo de 200mil (2.5mb) registros esperei quase 45 minutos e ainda não tinha finalizado, por fim desisti e resolvi reescrever usando o Go.

Ao reescrever o código em Go o processamento foi quase que imediato usando a abordagem do MAP. Você cria um map com a chave a valor sendo o texto que você tem e verifica se os itens existem no MAP ou não.

Após esta abordagem funcionar muito bem no Go, escrevi diversas formas no PHP de processar os mesmos arquivos para fazer um benchmark de performance e a melhor performance alcançada foi usando a função ISSET.

Depois decidi também criar um gerador de arquivos com números aleatórios para fazer listas com dados para os meus testes e validar possíveis erros e melhorar os scripts.

Todo o código está disponível no Github de forma gratuita e pode ser acessado em:

https://github.com/prsolucoes/gonotin

 

Dá pra fazer a mesma usando a função DIFF do linux/osx, porém os dados precisam estar ordenados nas duas listas.

Espero com este script poder ajudar a todos que precisam resolver este problema de forma prática.

Obrigado e até o próximo post pessoal.