qconrio2015
-
Upload
juan-lopes -
Category
Software
-
view
541 -
download
1
Transcript of qconrio2015
![Page 1: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/1.jpg)
![Page 2: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/2.jpg)
3,000,000,000 mensagens/dia
![Page 3: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/3.jpg)
3,000,000,000 mensagens/dia
1 terabytepor dia
![Page 4: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/4.jpg)
100,000,000,000mensagens de retenção no índice
3,000,000,000 mensagens/dia
1 terabytepor dia
![Page 5: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/5.jpg)
3,000,000,000 mensagens/dia
1 terabytepor dia
100,000,000,000mensagens de retenção no índice
3 máquinas8GB de RAM em cada
![Page 6: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/6.jpg)
LUCENE ESCALA?
Full-text para Big Data com
hardware modesto
@JUANPLOPES
TERM
TERM
TERM
TERMTERM
![Page 7: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/7.jpg)
QUEM SOU EU?UMA PERGUNTA PROFUNDA
PAI DO MIGUELGERENTE DE PAPINHAS SUPERVISOR DE BRINCADEIRAS
PROGRAMADOR @INTELIEMAGO DOS COMPILADORESCO-DIRETOR DE TRETAS CORPORATIVAS
MESTRANDO @IME/UERJCIÊNCIAS COMPUTACIONAISVICIADO EM COMPETIÇÕES DE PROGRAMAÇÃO
![Page 8: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/8.jpg)
QUEM SOU EU?UMA PERGUNTA PROFUNDA
GITHUB.COM
TWITTER.COM
/JUANPLOPES
![Page 9: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/9.jpg)
![Page 10: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/10.jpg)
![Page 11: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/11.jpg)
Ffaixas de frequência 40, 43, 45FAT 17fault tolerance 40, 41, 43FCC 17, 45fibra óptica 41, 43Ggateway 41, 99
ÍNDICE REMISSIVOPOUCA GENTE USA, MAS É ÚTIL
40 41 43 45
17
99
![Page 12: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/12.jpg)
“fault tolerance”
40
ÍNDICE REMISSIVOQUERIES BOOLEANAS
41 43
“faixas de frequência”
40 43 45
![Page 13: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/13.jpg)
ÍNDICE REMISSIVOQUERIES BOOLEANAS
“fault tolerance” OR “faixas de frequência”
40 43 4541
![Page 14: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/14.jpg)
ÍNDICE REMISSIVOQUERIES BOOLEANAS
“fault tolerance” AND “faixas de frequência”
40 43
![Page 15: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/15.jpg)
SUBJECT Important! Don’t let this leakFROM John Doe <[email protected]> TO Alice Legit <[email protected]>,
Bob Legit <[email protected]>BCC Eve Eavesdropper <[email protected]>BODY
Here is the password: pa$$word
DOCUMENTOA UNIDADE BÁSICA DO LUCENE
![Page 16: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/16.jpg)
SUBJECT Important! Don’t let this leakFROM John Doe <[email protected]> TO Alice Legit <[email protected]>,
Bob Legit <[email protected]>BCC Eve Eavesdropper <[email protected]>BODY
Here is the password: pa$$word
DOCUMENTOÉ PRECISO SEPARAR OS CAMPOS EM TOKENS
![Page 17: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/17.jpg)
SUBJECT important! dont let this leakFROM john doe <[email protected]> TO alice legit <[email protected]>,
bob legit <[email protected]>BCC eve eavesdropper <[email protected]>BODY
here is the password: pa$$word
DOCUMENTOCADA TOKEN PRECISA ESTAR NORMALIZADO
![Page 18: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/18.jpg)
DOCUMENTORESULTADO: CAMPOS E TERMOS
FROM doe, john, [email protected]
TO alice, [email protected], bob, [email protected], legit
BCC eavesdropper, eve, [email protected]
SUBJECT dont, leak, let, this
BODY here, password
![Page 19: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/19.jpg)
DOCUMENT
DOCUMENTORESULTADO: CAMPOS E TERMOS
![Page 20: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/20.jpg)
DOCUMENT
INDEXWRITER
DOCUMENT #0
DOCUMENTOAO INDEXAR, RECEBE UM ID
![Page 21: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/21.jpg)
SEGMENT #0
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
![Page 22: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/22.jpg)
SEGMENT #0
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
X #0
TERM_1: #0
TERM_3: #0
TERM_4: #0
![Page 23: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/23.jpg)
SEGMENT #0
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
Y #1
TERM_1: #0
TERM_3: #0, #1
TERM_4: #0
TERM_2: #1
TERM_5: #1
![Page 24: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/24.jpg)
SEGMENT #0
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
Z #2
TERM_1: #0, #2
TERM_3: #0, #1, #2
TERM_4: #0
TERM_2: #1, #2
TERM_5: #1
![Page 25: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/25.jpg)
SEGMENT #0
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
TERM_1: #0, #2
TERM_3: #0, #1, #2
TERM_2: #1, #2
TERM_5: #1
TERM_4: #0
![Page 26: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/26.jpg)
SEGMENT #1
INDEX WRITERESCREVE UM SEGMENTO POR VEZ
#0
![Page 27: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/27.jpg)
SEGMENTOSSÃO IMUTÁVEIS. MESMO.
-010 docs
![Page 28: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/28.jpg)
-1
SEGMENTOSSÃO IMUTÁVEIS. MESMO.
10 docs
![Page 29: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/29.jpg)
SEGMENTOSSÃO IMUTÁVEIS. MESMO.
-110 docs
-033 docs
![Page 30: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/30.jpg)
SEGMENTOSSÃO IMUTÁVEIS. MESMO.
-019 docs
-310 docs
-533 docs
![Page 31: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/31.jpg)
SEGMENTOSCADA SEGMENTO É UM PEQUENO ÍNDICE
INDEXREADER
INDEXREADER
INDEXREADER
-019 docs
-310 docs
-533 docs
COMPOSITEREADER
![Page 32: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/32.jpg)
SEGMENTOSID DO DOCUMENTO MUDA POR READER
-019 docs
-310 docs
-533 docs
INDEXREADER
-862 docs
0..9
10..42
43..61
0..61
![Page 33: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/33.jpg)
SEGMENTOSÁS VEZES É PRECISO FAZER MERGE
-090 docs -887 docs -144 docs -041 docs
-033 docs -430 docs -025 docs -022 docs
-018 docs -310 docs -15 docs -03 docs
![Page 34: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/34.jpg)
SEGMENTOSÁS VEZES É PRECISO FAZER MERGE
-090 docs -887 docs -144 docs -041 docs
-033 docs -430 docs -025 docs -022 docs
-018 docs -310 docs -15 docs -03 docs
-030 docs
![Page 35: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/35.jpg)
SEGMENTOSÁS VEZES É PRECISO FAZER MERGE
-090 docs -887 docs -144 docs -041 docs
-033 docs -430 docs -025 docs -022 docs
-030 docs
![Page 36: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/36.jpg)
SEGMENTOSA ANATOMIA DO SEGMENTO #0
_0.FNM
_0.FDX
_0.TIM
_0.TIP
_0.FRQ
_0.PRX
_0.FDT
_0.DEL
_0.NRM
![Page 37: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/37.jpg)
_0.NRM
_0.FDX
_0.TIM
_0.TIP
_0.FRQ
_0.PRX
_0.FDT
_0.DEL
SEGMENTOSA ANATOMIA DO SEGMENTO #0
_0.FNM
FNM: FIELD NAMESMantém informações sobre quais campos existem no segmento, bem como o tipo do campo em cada documento.
![Page 38: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/38.jpg)
_0.NRM
_0.FDX
_0.TIM
_0.TIP
_0.PRX
_0.FDT
_0.FRQ
_0.FNM
_0.DEL
SEGMENTOSA ANATOMIA DO SEGMENTO #0
DEL: DELETED DOCSArquivo mutável. Guarda IDs de documentos deletados do índice.
![Page 39: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/39.jpg)
_0.NRM
_0.FDT
_0.FDX
_0.DEL
_0.FNM
_0.TIM
_0.TIP
_0.PRX
_0.FRQ
SEGMENTOSA ANATOMIA DO SEGMENTO #0
THE POSTINGS FORMATSão o coração do Lucene. O formato mudou consideravelmente no Lucene 4.0.0.
![Page 40: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/40.jpg)
_0.NRM
_0.PRX
_0.FRQ
_0.DEL
_0.FDX
_0.FDT
_0.FNM
SEGMENTOSA ANATOMIA DO SEGMENTO #0
_0.TIM
_0.TIP
TIM E TIP: TERM INDEXArmazenam os termos. O TIP é um “índice do índice” e permite navegar mais rapidamente dentro do TIM.
![Page 41: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/41.jpg)
_0.NRM
_0.FDT
_0.FDX
_0.DEL
_0.FNM
_0.TIM
_0.TIP
_0.PRX
_0.FRQ
SEGMENTOSA ANATOMIA DO SEGMENTO #0
FRQ: FREQUENCIESArmazenam quais documentos contém cada termo, bem como a frequência que os termos aparecem.
![Page 42: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/42.jpg)
_0.NRM
_0.FDT
_0.FDX
_0.TIM
_0.TIP
_0.DEL
_0.FNM
_0.FRQ
_0.PRX
SEGMENTOSA ANATOMIA DO SEGMENTO #0
PRX: POSITIONSOpcional. Armazena as posições em que cada termo aparece nos documentos.
![Page 43: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/43.jpg)
_0.NRM
_0.TIM
_0.TIP
_0.DEL
_0.FNM
_0.FRQ
_0.PRX
_0.FDT
_0.FDX
SEGMENTOSA ANATOMIA DO SEGMENTO #0
FDX E FDT: STORED FIELDSArmazena certos campos indexados por documento. FDX indexa o conteúdo em FDT.
![Page 44: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/44.jpg)
_0.FDT
_0.FDX
_0.TIM
_0.TIP
_0.DEL
_0.FNM
_0.FRQ
_0.PRX
SEGMENTOSA ANATOMIA DO SEGMENTO #0
NRM: NORMSArmazena informações para ajudar na ordenação de resultados relevantes.
_0.NRM
![Page 45: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/45.jpg)
Perceba que estes slides não falam de TermVectors.
É proposital.Lucene não é banco de dados.
SEGMENTOSTERM VECTORS CONSIDERED HARMFUL
_0.TVD
_0.TVX
_0.TVF
![Page 46: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/46.jpg)
FILE FORMATPRECISAMOS FALAR DE BYTES(BEM DE LEVE)
TERM_2 2 3 5 6 7 9 12 13
TERM_3
TERM_1Docs
![Page 47: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/47.jpg)
FILE FORMATPRECISAMOS FALAR DE BYTES(BEM DE LEVE)
TERM_2 2 1 2 1 1 2 3 1
TERM_3
TERM_1DocDeltas
![Page 48: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/48.jpg)
FILE FORMATPRECISAMOS FALAR DE BYTES(BEM DE LEVE)
TERM_2 2 1 2 1 1 2 3 1
TERM_3
TERM_1Não vi vantagem. Ainda são 32 bits!
DocDeltas
![Page 49: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/49.jpg)
FILE FORMATVENI VIDI V-INT
32-BIT LITTLE ENDIAN INT
= 123,456,789
= 1
![Page 50: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/50.jpg)
32-BIT V-INT
FILE FORMATVENI VIDI V-INT
= 123,456,789
= 1
= 128
![Page 51: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/51.jpg)
FILE FORMATVENI VIDI V-INT
DE ATÉ CUSTA
0 127 1 byte
128 16,383 2 bytes
16,384 2,097,151 3 bytes
2,097,152 268,435,455 4 bytes
268,435,456 4,294,967,296 5 bytes
![Page 52: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/52.jpg)
VANTAGENS
MENOS ESPAÇOMENOS I/O
DESVANTAGENS
IMPOSSÍVEL ITERAR AO CONTRÁRIODIFÍCIL ACESSO ALEATÓRIOMAIOR CUSTO DE PROCESSAMENTO
FILE FORMATVENI VIDI V-INT
![Page 53: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/53.jpg)
VAMOS FALAR DE DESAFIOS?PRODUÇÃO, AINDA TEM TEMPO?
![Page 54: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/54.jpg)
PROBLEMASFALANDO EM INTEIROS
DOCID :: INT32i.e.
DOCID < 2,147,483,648
![Page 55: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/55.jpg)
_0.FDX
_0.TIM
_0.TIP
_0.FRQ
_0.PRX
_0.FDT
PROBLEMASO QUE CRESCE NO ÍNDICE?
TERM INDEXTERMO EM UTF8 + BYTES CONSTANTES / TERMO
FREQUENCIES AND POSITIONS~2 BYTES / TERMO DISTINTO / DOCUMENTOA PRINCÍPIO, SEM POSITIONS
STORED FIELDSSOMENTE ID, 16 BYTES / DOCUMENTO+ OVERHEAD 8 BYTES / DOCUMENTO
![Page 56: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/56.jpg)
PROBLEMAS100% DE OVERHEAD DE ÍNDICE? NEM PENSAR!
LUCENEINDEX
RAW STORAGE
ID
APIQUERY
MSGS
![Page 57: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/57.jpg)
SOLUÇÃO?AGRUPAR MENSAGENS
DOCUMENT
MSG
MSG
MSG
MSG
MSG
MSG
![Page 58: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/58.jpg)
SOLUÇÃO?AGRUPAR MENSAGENS
VANTAGENS
MENOS TERMOS DISTINTOSMENOR OVERHEAD COM STORED FIELDSMENOS DOCIDsÍNDICE MENOR (MENOS I/O)
DESVANTAGENS
OVERHEAD DE FILTRO PÓS QUERYSEM QUERIES “AND” E “NOT”
![Page 59: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/59.jpg)
SOLUÇÃO?TEM UM PROBLEMÃO
TERMS:
A, B, C
A, B B, CA AND C→ TRUEERRADO: Deveria ser false, pois nenhuma mensagem individual contém A e C.
A AND NOT C→ FALSEERRADO: Deveria ser true, pois há uma mensagem que contém A e não contém C.
![Page 60: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/60.jpg)
SOLUÇÃO [2]?ARMAZENAR ÍNDICES USANDO POSITIONS
_0.PRX
POSITIONSE PAYLOAD(TODO MUNDO ESQUECE DO PAYLOAD)
![Page 61: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/61.jpg)
DOCUMENT #42
SOLUÇÃO [2]?ARMAZENAR ÍNDICES USANDO POSITIONS
A, B, C, E
A, C
A, D, E
.
.
.
0
1
2
SEGMENT
A: 42 (0, 1, 2, ...)
B: 42 (0, ...)
C: 42 (0, 1, ...)
D: 42 (2, ...)
E: 42 (0, 2, ...)
INDEX
![Page 62: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/62.jpg)
SOLUÇÃO [2]?ARMAZENAR ÍNDICES USANDO POSITIONS
❖ ATÉ 1024 MENSAGENS POR DOCUMENTO
❖ SE < 64 MENSAGENS EM UM MESMO TERMO, USAR POSITIONS.
❖ SE > 64 MENSAGENS, ARMAZENAR UM BITSET COM 128 BYTES NO PAYLOAD (TAMBÉM NO PRX)POIS GERALMENTE CADA POSITION CONSOME 2 BYTES
❖ GARANTE MÁXIMO DE 128 BYTES / TERMO / DOCUMENTO. GERALMENTE MUITO MENOS.
![Page 63: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/63.jpg)
A
B
SOLUÇÃO [2]?É NECESSÁRIO REIMPLEMENTAR A BUSCA
A AND B
53 55 63 68 78 80 88... ...
44 45 47 68 88 95 98... ...
![Page 64: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/64.jpg)
SOLUÇÃO [2]?É NECESSÁRIO REIMPLEMENTAR A BUSCA
A AND B
68
68
A
B
1 5 10
1 2 5
68A&B 1 5
13
![Page 65: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/65.jpg)
ORDENAÇÃO PARCIALTOP 1000 FROM 400,000,000
HEAP SELECTO(n log k) TEMPOO(k) MEMÓRIA
![Page 66: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/66.jpg)
ORDENAÇÃO PARCIALTOP 1000 FROM 400,000,000
HEAP SELECTO(n log k) TEMPOO(k) MEMÓRIA
QUICK SELECTO(n) TEMPO
O(n) MEMÓRIA
![Page 67: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/67.jpg)
CONCLUSÃOJÁ TOMEI TEMPO DEMAIS DE VOCÊS
Bibliotecas são feitas de forma genérica para atender razoavelmente o máximo de casos.
Ás vezes, para permitir grandes volumes sem uma infraestrutura colossal, é preciso entender como customizar a ferramenta para suas necessidades.
![Page 68: qconrio2015](https://reader031.fdocuments.net/reader031/viewer/2022030318/5a6d16137f8b9aff418b4bfb/html5/thumbnails/68.jpg)
PERGUNTAS?
ENQUANTO ISSO, LINKS:juanlopes.net/qconrio2015
twitter.com/juanplopesgithub.com/juanplopes