30-05-2024 Migrazione su Virtuoso
Meta
https://github.com/ad-freiburg/qlever-control/issues/35
- docker.io/adfreiburg/qlever:latest Non garantisce di usare l’ultima versione! Non viene fatto un pull automatico. Stavo inconsapevolmente usando la versione di ottobre 2023
- Fondamentale specificare il digest o il commit dell’immage docker, il tag latest non basta
Ottimizzazione Virtuoso per dataset di grandi dimensioni e server potenti
1
2
3
4
5
6
7
8
9
10
11;; Per 500 GB di RAM
;; Also, if running with a large database, setting MaxCheckpointRemap to 1/4th of the database size is recommended. This is in pages, 8K per page.
MaxCheckpointRemap = 20000000
;; NumberOfBuffers = (Free Memory * 0.66)/8000. MaxDirtyBuffers (3/4 of NumberOfBuffers)
NumberOfBuffers = 44000000
MaxDirtyBuffers = 33000000
MaxClientConnections = 200
O_DIRECT = 1
RdfFreeTextRulesSize = 100000
IndexTreeMaps = 256
MaxQueryMem = 16GScript per bulk load in multiprocessing con Virtuoso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#!/bin/bash
# Configurazione variabili
CONTAINER_NAME="oc_meta" # Nome del container Docker
DBA_USER="..." # Nome utente DBA
DBA_PASSWORD="..." # Password DBA
LOG_FILE="bulk_load.log" # File di log nel volume montato
CORES=$(nproc) # Numero di core della macchina
LOADERS=$((CORES / 2)) # Numero di loaders (massimo core / 2)
# Funzione per lanciare il loader
launch_loader() {
docker exec -i $CONTAINER_NAME isql 1111 $DBA_USER $DBA_PASSWORD exec="rdf_loader_run(log_enable=>2);" >> $LOG_FILE 2>&1 &
}
# Inizializzazione del log
echo "Inizio caricamento bulk RDF: $(date)" > $LOG_FILE
# Avvio multipli loader
for ((i=1; i<=LOADERS; i++))
do
echo "Lancio loader $i: $(date)" >> $LOG_FILE
launch_loader
done
# Attesa del completamento dei loaders
wait
# Esecuzione del checkpoint finale
echo "Esecuzione checkpoint: $(date)" >> $LOG_FILE
docker exec -i $CONTAINER_NAME isql 1111 $DBA_USER $DBA_PASSWORD exec="checkpoint;" >> $LOG_FILE 2>&1
# Ripristino delle impostazioni di checkpoint e scheduler
docker exec -i $CONTAINER_NAME isql 1111 $DBA_USER $DBA_PASSWORD exec="checkpoint_interval(N);" >> $LOG_FILE 2>&1
docker exec -i $CONTAINER_NAME isql 1111 $DBA_USER $DBA_PASSWORD exec="scheduler_interval(M);" >> $LOG_FILE 2>&1
echo "Caricamento bulk RDF completato: $(date)" >> $LOG_FILEVirtuoso
- Conteggi
- AR:
- Blazegraph: 1,577,469,289
- Virtuoso:1,577,470,930
- BR:
- Blazegraph: 1,246,866,834
- Virtuoso: 1,247,454,694
- RA:
- Blazegraph: 903,227,547
- Virtuoso: 903,228,697
- ID:
- Blazegraph: 628,852,233
- Virtuoso: 628,857,264
- RE:
- Blazegraph: 212,260,046
- Virtuoso: 212,260,046
- AR:
- Osservazioni:
- Ci sono delle triple di default nel triplestore che non sono riuscito a cancellare per problemi di permessi
- Virtuoso è decisamente più lento di Blazegraph nel contare le triple
- La differenza di triple si spiega perchè nei dati ci sono più triple che nel triplestore Blazegraph. E qualcosa di cui mi ero già accorto a proposito dei soggetti referenziati senza triple. Quei riferimenti sono presenti solo nei dati e non nel triplestore per ragioni sconosciute
- Conteggi
Qlever
- Numero di triple
- Blazegraph: 4,568,675,949
- Qlever: 4,569,275,768
- Numero di triple
30-05-2024 Migrazione su Virtuoso
https://arcangelo7.github.io/p/6a5069cba0454efd96efd777be97096b/