SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Você não precisa estar
100% certo
o tempo todo!
Algoritmos para consultar terabytes
de dados
Fabiane Bizinella Nardon
TailTarget
@fabianenardon
SUAS RESPOSTAS DEVEM ESTAR
SEMPRE CERTAS
ÀS VEZES 100% CERTAS
ÀS VEZES 98% CERTAS
2 Bilhões de tuplas / 71min 31 Milhões de tuplas / 3 seg
Fonte: http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html
QUAL O TAMANHO DA AMOSTRA
QUE EU PRECISO?
DEPENDE DE QUANTO VOCÊ
ACEITA ERRAR
MARGEM DE ERRO:
INTERVALO NO QUAL ESPERO
ENCONTRAR O DADO QUE
QUERO MEDIR.
EXEMPLO:
NÚMERO DE MULHERES NA INTERNET
COM 5% DE MARGEM DE ERRO.
SE O NÚMERO ESTIMADO É DE 100
MILHÕES, ESPERO QUE O NÚMERO
REAL ESTEJA ENTRE 100 MILHÕES
+/- 5%
NÍVEL DE CONFIANÇA:
CERTEZA QUE O DADO QUE
BUSCAMOS ESTÁ DENTRO DA
MARGEM DE ERRO
EXEMPLO:
95% DE FATOR DE CERTEZA
SIGNIFICA QUE EM 95% DOS
CASOS, O NÚMERO DE MULHERES
ESTARÁ DENTRO DE 100 MILHÕES
+/- 5%
MARGEM
DE ERRO
NÍVEL DE
CONFIANÇA
TAMANHO
DA AMOSTRA
MARGEM
DE ERRO NÍVEL DE
CONFIANÇA
TAMANHO
DA AMOSTRA
MARGEM
DE ERRO
NÍVEL DE
CONFIANÇA
TAMANHO
DA AMOSTRA
n = (z * stddev /mde)2
n = tamanho da amostra
stddev = desvio padrão da população
mde = margem de erro
z = Z-score
nreal = (n * p) / (n + p – 1)
n = tamanho da amostra
nreal= tamanho real da amostra
P = tamanho da população
n = (z * stddev /mde)2
Z-Score:
90% = 1.645
95% = 1.96
99% = 2.576
n = (z * stddev /mde)2
n = (2.576 * 0.5 / 0.01)2
n = 16.590
n = tamanho da amostra
stddev = desvio padrão da população
mde = margem de erro
z = Z-score
nreal = (n * p) / (n + p – 1)
nreal = (16590 * 100000) / (16590 +
100000 -1)
nreal = 14.229
n = tamanho da amostra
nreal= tamanho real da amostra
P = tamanho da população
P = 100.000 -> nreal = 14.229
P = 200.000 -> nreal = 15.317
P = 400.000 -> nreal = 15.927
P = 1.000.000 -> nreal = 16.317
P = 10.000.000 -> nreal = 16.560
P = 200.000.000 -> nreal = 16.586
P = 400.000.000 -> nreal = 16.587
P = 1.000.000.000 -> nreal = 16.587
POPULAÇÃO: 488.333.067
PROPORÇÃO POR GÊNERO:
AMOSTRA: 32.000
M: 156.556.529 (32.05%)
H: 95.148.646 (19.48%)
AMOSTRA: 16.000
M: 158.036.788 (32.36%)
H: 96.018.489 (19.66%)
COMO ESCOLHER OS ITENS DA
AMOSTRA
SAMPLING WITH REPLACEMENT:
ESCOLHE UM ITEM ALEATÓRIO
SUCESSIVAMENTE. MESMO ITEM
PODE APARECER MAIS DE UMA VEZ
SAMPLING WITHOUT
REPLACEMENT:
ESCOLHE UM ITEM ALEATÓRIO E
GARANTE QUE ELE SÓ APARECE
UMA VEZ NA AMOSTRA.
Random Sampling:
Escolhe amostras aleatórias,
todas com o mesmo peso
Stratified Sampling:
Divide a população em stratas
e faz uma amostra de cada
strata separadamente
AMOSTRA RANDÔMICA
PARA CADA GRUPO AMOSTRAL, GUARDE:
TAMANHO DA AMOSTRA
TAMANHO REAL
IDENTIFICADOR DO GRUPO AMOSTRAL
EXTRAINDO AMOSTRAS DA
BASE DE DADOS
ESTRATÉGIA 1: GRAVE NÚMERO
RANDÔMICO INDEXADO NO
BANCO DE DADOS
{
"_id": 1,
"gender": "f",
"age": 24,
"selector": 0.12412423
}
* MongoDB
int selector = 0;
int sampleCount = 0;
List<User> sample = new ArrayList<>();
double prevSelector = -1;
while (sampleCount < SAMPLE_SIZE) {
/* Add to sample result of
db.Users.find({
selector: {
$gt: prevSelector}
}
).limit(100);
Set last selector found to prevSelector
*/
sampleCount += sample.size();
}
ESTRATÉGIA 2: USE
MECANISMO DE SAMPLING DO
SEU BD
{
"aggregations": {
"sample": {
"sampler": {
"shard_size": 16000
},
"aggregations": {
"views": {
"terms": {
"field": "gender“
},
"aggregations": {
"unique_users": {
"cardinality": {
"field": "uid"
}
}
}
}
}
}
}
} * ElasticSearch
ESTRATÉGIA 3: USANDO
SHARDING
SHARDING 1 SHARDING 2 SHARDING 3
ITEMS POR SHARDING = TAMANHO DA AMOSTRA / NÚMERO DE SHARDINGS
RANDOMKEYs RANDOMKEYs RANDOMKEYs
* Redis
PARA CADA GRUPO AMOSTRAL, GUARDE:
TAMANHO DA AMOSTRA
TAMANHO REAL
IDENTIFICADOR DO GRUPO AMOSTRAL
Ta = Tamanho da Amostra
Tp = Tamanho da População
Na = Número de Itens na Amostra
Np = Número de Itens na população
Np = Na * Tp / Ta
Exemplo:
Ta = 1000
Tp = 100.000
Na = 400 Mulheres
Np = 400 * 100.000 / 1000 = 40.000
NÃO SEI O TAMANHO DA
POPULAÇÃO.
E AGORA?
RESERVOIR SAMPLING
1 2 3 4 5
A B C D E
F
Random (0..1): 0.7
K = Ta / i
K = 5 / 6 = 0.83
Se K > Random => TROCA!
RESERVOIR SAMPLING
DISTRIBUÍDO
1 2 3 4 5
A B C D E F G H I J K L M N O P Q R S T U V X Y W Z
1 2 3 4 5
A B C D E F G H I J K L M N O P Q R S T U V X Y W Z
1 2 3 4 5
A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11
G:0.4 H:0.6 I:0.76
J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33
P:0.56 Q:0.32 R:0.23
S:0.21 T:0.32 U:0.22 V:0.7 X:0.12
Y:0.23 W:0.3 Z:0.76
private SortedMap<Double, MyObject> reservoir;
...
if (reservoir.size() < SAMPLE_SIZE) {
reservoir.put(score, myObject);
} else if (score > reservoir.firstKey()) {
reservoir.remove(reservoir.firstKey());
reservoir.put(score, myObject);
}
O L P I Z
1 2 3 4 5
A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11
G:0.4 H:0.6 I:0.76
J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33
P:0.56 Q:0.32 R:0.23
S:0.21 T:0.32 U:0.22 V:0.7 X:0.12
Y:0.23 W:0.3 Z:0.76
H:0.6 D:0.7 E:0.9 F:0.11 I:0.76 R:0.23 Q:0.32 O:0.33 L:0.54 P:0.56 S:0.21 U:0.22 Y:0.23 T:0.32 Z:0.76
COMBINER
import org.apache.crunch.lib.Sample;
Sample.reservoirSample(PCollection<T> input, int sampleSize)
Apache Crunch:
CONSULTAS APROXIMADAS
AGREGAÇÕES
PROPORÇÕES
COUNT
Np = Na * Tp / Ta
400 * 100.000 / 1000
=
40.000
SUM
Sp = Sa * Tp / Ta
600 * 100.000 / 1000
=
60.000
AVERAGE
Ap = (Sa * Tp / Ta) / (Na * Tp / Ta)
(600 * 100.000 / 1000)
/
(400 * 100.000 / 1000)
=
1.5
Você não precisa estar
100% certo
o tempo todo!
Algoritmos em Java para consultar
terabytes de dados
Fabiane Bizinella Nardon
TailTarget
@fabianenardon

Mais conteúdo relacionado

Destaque

Art of the Master by Joe Grande_TM
Art of the Master by Joe Grande_TMArt of the Master by Joe Grande_TM
Art of the Master by Joe Grande_TMJoe Grande
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.Irina Negreyeva
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓN
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓNLAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓN
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓNcdiasj
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarialtdc-globalcode
 
TDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data ScienceTDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data Sciencetdc-globalcode
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
TDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data ScienceTDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data Sciencetdc-globalcode
 

Destaque (13)

Art of the Master by Joe Grande_TM
Art of the Master by Joe Grande_TMArt of the Master by Joe Grande_TM
Art of the Master by Joe Grande_TM
 
Ocular myasthenia
Ocular myastheniaOcular myasthenia
Ocular myasthenia
 
Taller word
Taller word Taller word
Taller word
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.
Аналітичний звіт щодо впровадження медіаосвіти в Україні. 2015 рік. Частина 2.
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓN
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓNLAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓN
LAS FRANQUICIAS FRENTE A LAS AGENCIAS COMERCIALES Y LAS CONCESIÓN
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarial
 
TDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data ScienceTDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data Science
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
TDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data ScienceTDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data Science
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxJMTCS
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdfDemetrio Ccesa Rayme
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptAlineSilvaPotuk
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãodanielagracia9
 
6°ano Uso de pontuação e acentuação.pptx
6°ano Uso de pontuação e acentuação.pptx6°ano Uso de pontuação e acentuação.pptx
6°ano Uso de pontuação e acentuação.pptxErivaldoLima15
 
A população Brasileira e diferença de populoso e povoado
A população Brasileira e diferença de populoso e povoadoA população Brasileira e diferença de populoso e povoado
A população Brasileira e diferença de populoso e povoadodanieligomes4
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxHenriqueLuciano2
 
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxQUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxAntonioVieira539017
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLaseVasconcelos1
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxkarinasantiago54
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxJMTCS
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAlexandreFrana33
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxHlioMachado1
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024GleyceMoreiraXWeslle
 

Último (20)

A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetização
 
6°ano Uso de pontuação e acentuação.pptx
6°ano Uso de pontuação e acentuação.pptx6°ano Uso de pontuação e acentuação.pptx
6°ano Uso de pontuação e acentuação.pptx
 
A população Brasileira e diferença de populoso e povoado
A população Brasileira e diferença de populoso e povoadoA população Brasileira e diferença de populoso e povoado
A população Brasileira e diferença de populoso e povoado
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
“O AMANHÃ EXIGE O MELHOR DE HOJE” _
“O AMANHÃ EXIGE O MELHOR DE HOJE”       _“O AMANHÃ EXIGE O MELHOR DE HOJE”       _
“O AMANHÃ EXIGE O MELHOR DE HOJE” _
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
 
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxQUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdf
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptx
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptx
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptx
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024
 

Algoritmos de amostragem para consultas aproximadas em grandes bases de dados

  • 1. Você não precisa estar 100% certo o tempo todo! Algoritmos para consultar terabytes de dados Fabiane Bizinella Nardon TailTarget @fabianenardon
  • 2. SUAS RESPOSTAS DEVEM ESTAR SEMPRE CERTAS
  • 3. ÀS VEZES 100% CERTAS
  • 4. ÀS VEZES 98% CERTAS
  • 5. 2 Bilhões de tuplas / 71min 31 Milhões de tuplas / 3 seg Fonte: http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html
  • 6. QUAL O TAMANHO DA AMOSTRA QUE EU PRECISO?
  • 7. DEPENDE DE QUANTO VOCÊ ACEITA ERRAR
  • 8. MARGEM DE ERRO: INTERVALO NO QUAL ESPERO ENCONTRAR O DADO QUE QUERO MEDIR.
  • 9. EXEMPLO: NÚMERO DE MULHERES NA INTERNET COM 5% DE MARGEM DE ERRO. SE O NÚMERO ESTIMADO É DE 100 MILHÕES, ESPERO QUE O NÚMERO REAL ESTEJA ENTRE 100 MILHÕES +/- 5%
  • 10. NÍVEL DE CONFIANÇA: CERTEZA QUE O DADO QUE BUSCAMOS ESTÁ DENTRO DA MARGEM DE ERRO
  • 11. EXEMPLO: 95% DE FATOR DE CERTEZA SIGNIFICA QUE EM 95% DOS CASOS, O NÚMERO DE MULHERES ESTARÁ DENTRO DE 100 MILHÕES +/- 5%
  • 13. MARGEM DE ERRO NÍVEL DE CONFIANÇA TAMANHO DA AMOSTRA
  • 15. n = (z * stddev /mde)2 n = tamanho da amostra stddev = desvio padrão da população mde = margem de erro z = Z-score
  • 16. nreal = (n * p) / (n + p – 1) n = tamanho da amostra nreal= tamanho real da amostra P = tamanho da população
  • 17. n = (z * stddev /mde)2 Z-Score: 90% = 1.645 95% = 1.96 99% = 2.576
  • 18. n = (z * stddev /mde)2 n = (2.576 * 0.5 / 0.01)2 n = 16.590 n = tamanho da amostra stddev = desvio padrão da população mde = margem de erro z = Z-score
  • 19. nreal = (n * p) / (n + p – 1) nreal = (16590 * 100000) / (16590 + 100000 -1) nreal = 14.229 n = tamanho da amostra nreal= tamanho real da amostra P = tamanho da população
  • 20. P = 100.000 -> nreal = 14.229 P = 200.000 -> nreal = 15.317 P = 400.000 -> nreal = 15.927 P = 1.000.000 -> nreal = 16.317 P = 10.000.000 -> nreal = 16.560 P = 200.000.000 -> nreal = 16.586 P = 400.000.000 -> nreal = 16.587 P = 1.000.000.000 -> nreal = 16.587
  • 21. POPULAÇÃO: 488.333.067 PROPORÇÃO POR GÊNERO: AMOSTRA: 32.000 M: 156.556.529 (32.05%) H: 95.148.646 (19.48%) AMOSTRA: 16.000 M: 158.036.788 (32.36%) H: 96.018.489 (19.66%)
  • 22. COMO ESCOLHER OS ITENS DA AMOSTRA
  • 23. SAMPLING WITH REPLACEMENT: ESCOLHE UM ITEM ALEATÓRIO SUCESSIVAMENTE. MESMO ITEM PODE APARECER MAIS DE UMA VEZ
  • 24. SAMPLING WITHOUT REPLACEMENT: ESCOLHE UM ITEM ALEATÓRIO E GARANTE QUE ELE SÓ APARECE UMA VEZ NA AMOSTRA.
  • 25. Random Sampling: Escolhe amostras aleatórias, todas com o mesmo peso
  • 26. Stratified Sampling: Divide a população em stratas e faz uma amostra de cada strata separadamente
  • 28. PARA CADA GRUPO AMOSTRAL, GUARDE: TAMANHO DA AMOSTRA TAMANHO REAL IDENTIFICADOR DO GRUPO AMOSTRAL
  • 30. ESTRATÉGIA 1: GRAVE NÚMERO RANDÔMICO INDEXADO NO BANCO DE DADOS { "_id": 1, "gender": "f", "age": 24, "selector": 0.12412423 } * MongoDB
  • 31. int selector = 0; int sampleCount = 0; List<User> sample = new ArrayList<>(); double prevSelector = -1; while (sampleCount < SAMPLE_SIZE) { /* Add to sample result of db.Users.find({ selector: { $gt: prevSelector} } ).limit(100); Set last selector found to prevSelector */ sampleCount += sample.size(); }
  • 32. ESTRATÉGIA 2: USE MECANISMO DE SAMPLING DO SEU BD
  • 33. { "aggregations": { "sample": { "sampler": { "shard_size": 16000 }, "aggregations": { "views": { "terms": { "field": "gender“ }, "aggregations": { "unique_users": { "cardinality": { "field": "uid" } } } } } } } } * ElasticSearch
  • 35. SHARDING 1 SHARDING 2 SHARDING 3 ITEMS POR SHARDING = TAMANHO DA AMOSTRA / NÚMERO DE SHARDINGS RANDOMKEYs RANDOMKEYs RANDOMKEYs * Redis
  • 36. PARA CADA GRUPO AMOSTRAL, GUARDE: TAMANHO DA AMOSTRA TAMANHO REAL IDENTIFICADOR DO GRUPO AMOSTRAL
  • 37. Ta = Tamanho da Amostra Tp = Tamanho da População Na = Número de Itens na Amostra Np = Número de Itens na população Np = Na * Tp / Ta Exemplo: Ta = 1000 Tp = 100.000 Na = 400 Mulheres Np = 400 * 100.000 / 1000 = 40.000
  • 38. NÃO SEI O TAMANHO DA POPULAÇÃO. E AGORA?
  • 40. 1 2 3 4 5 A B C D E F Random (0..1): 0.7 K = Ta / i K = 5 / 6 = 0.83 Se K > Random => TROCA!
  • 42. 1 2 3 4 5 A B C D E F G H I J K L M N O P Q R S T U V X Y W Z
  • 43. 1 2 3 4 5 A B C D E F G H I J K L M N O P Q R S T U V X Y W Z
  • 44. 1 2 3 4 5 A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11 G:0.4 H:0.6 I:0.76 J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33 P:0.56 Q:0.32 R:0.23 S:0.21 T:0.32 U:0.22 V:0.7 X:0.12 Y:0.23 W:0.3 Z:0.76 private SortedMap<Double, MyObject> reservoir; ... if (reservoir.size() < SAMPLE_SIZE) { reservoir.put(score, myObject); } else if (score > reservoir.firstKey()) { reservoir.remove(reservoir.firstKey()); reservoir.put(score, myObject); }
  • 45. O L P I Z 1 2 3 4 5 A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11 G:0.4 H:0.6 I:0.76 J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33 P:0.56 Q:0.32 R:0.23 S:0.21 T:0.32 U:0.22 V:0.7 X:0.12 Y:0.23 W:0.3 Z:0.76 H:0.6 D:0.7 E:0.9 F:0.11 I:0.76 R:0.23 Q:0.32 O:0.33 L:0.54 P:0.56 S:0.21 U:0.22 Y:0.23 T:0.32 Z:0.76 COMBINER
  • 48. COUNT Np = Na * Tp / Ta 400 * 100.000 / 1000 = 40.000
  • 49. SUM Sp = Sa * Tp / Ta 600 * 100.000 / 1000 = 60.000
  • 50. AVERAGE Ap = (Sa * Tp / Ta) / (Na * Tp / Ta) (600 * 100.000 / 1000) / (400 * 100.000 / 1000) = 1.5
  • 51. Você não precisa estar 100% certo o tempo todo! Algoritmos em Java para consultar terabytes de dados Fabiane Bizinella Nardon TailTarget @fabianenardon