Una blockchain è una lista concatenata di blocchi. Ogni blocco è descritto da uno hash (che lo identifica), un timestamp e un miner. I blocchi contengono transazioni e ogni transazione è descritta da uno hash (che la identifica), da un mittente, un destinatario e un ammontare scambiato. Scrivere uno schema concettorale ER e uno schema logico di tipo relazionale per l’informazione descritta.
block(hashBlock, timestamp, miner)
transaction(hashTrans, from, to, value, hashBlock)
transaction(hashBlock) –> block(hashBlock)
Rispetto allo schema dell’esercizio precedente scrivere in dplyr le seguenti interrogazioni:
# La top-10 dei miner per numero di blocchi creati
block %>%
group_by(miner) %>%
summarize(nblocks = n()) %>%
arrange(desc(nblocks)) %>%
head(10)
# oppure
count(block, miner, sort = TRUE) %>%
head(10)
# I blocchi ordinati in senso decrescente per ammontare medio scambiato nelle transazioni del blocco
inner_join(block, transaction) %>%
group_by(hashBlock) %>%
summarise(traded = mean(value)) %>%
arrange(desc(traded))
Scrivere in R una versione ottimizzata del seguente codice:
sumLogSlow = function(n) {
total <- 0
x <- runif(n, 1, 100)
for(i in 1:n) total <- total + log(x[i])
total
}
sumLogFast = function(n) {
x <- runif(n, 1, 100)
sum(log(x))
}
Dare una definizione e alcuni esempi di applicazione dei big data. [Si veda il syllabus del corso]
Discutere le differenza tra data science e data humanism. [Si veda il syllabus del corso]