3. Nosso objetivo é ter consultas
constantes sobre as informações de
2 milhões de usuários (e crescendo
rápido).
4. Afinal, Porque não um
SQL-like?
Porque é relacional;
Porque tem dificuldades ao escalar;
Vide o modelo de binlog (MySQL);
5. Exemplo do MySQL Binlog
BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////
AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### UPDATE test.t
### WHERE
### @1=1
### @2='apple'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id
17 flags: STMT_END_F
BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
### DELETE FROM test.t
### WHERE
### @1=1
### @2='pear'
### @3='2009:01:01'
6. A partir de um pequeno exemplo,
podemos ter idéia do comportamento
em grande escala. Este é um dos
motivos porque um DB relacional tem
dificuldades em escalar.
7. Ter dificuldades não significa que não é
possível. O Mobimail exige uma solução
mais simples e adequada.
8. Porque LDAP?
Estruturado em forma de árvore;
Fácil para replicar, master-master;
Compatibilidade com produtos de
terceiros ( IronPort, CommuniGate,
PowerMTA, etc. );
É a solução adequada para “email”;
16. Utilização de MD5
MD5 ("locaweb.com.br") =
b79f6b6701b3163b8ce6b08ce48db468
cn=locaweb.com.br,cn=b,cn=79,o=Mail,o
u=Locaweb;
17. Com a utilização do MD5, conseguimos ter
uma árvore balanceada (horizontal vs
vertical).
18. Memcached
Não existe servidor centralizado;
Cada máquina é potencialmente um
servidor de Memcached (consultas e
respostas, somente local);
Novos servidores tem a quantidade de
memória RAM dimensionada para esta
tarefa;
19. Olhando para os
fontes
Abstração entre as duas camadas;
Uma única chamada consulta
automaticamente o Memcached e o LDAP;
De forma transparente, é feita a
inclusão de um registro do LDAP para
o Memcached (sempre local);