Skip to content

Latest commit

 

History

History
172 lines (140 loc) · 4.62 KB

README.adoc

File metadata and controls

172 lines (140 loc) · 4.62 KB
Table 1. Informations générales

Rédacteur

K3rn€l P4n1k

Date

samedi 22 avril 2017

État

Rédigé

License

Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de la licence,soit (à votre gré) toute version ultérieure.

Ce programme est distribué dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie tacite de QUALITÉ MARCHANDE ou d’ADÉQUATION à UN BUT PARTICULIER. Consultez la GNU General Public License pour plus de détails.

Vous devez avoir reçu une copie de la GNU General Public License en même temps que ce programme ; si ce n’est pas le cas, consultez http://www.gnu.org/licenses."

PrimeDB

Objectif du document

Documente l’installation et l’usage de PrimeDB

Description générale

PrimeDB est une base de données construite à partir des données disponnible sur http://primes.utm.edu/lists/small/millions. Ce repository contient les sources permettant:

  • Le téléchargement des données

  • L’import de ces données dans une base SQLite3

  • Un client très sommaire

  • Quelques scripts et templates sql pour automatiser le requêtage

Important
Prévoir 1,5 Giga (estimation large) de libre pour l’installation. Le fichier final fait un peu moins de 700 Méga.
Intention

Profiter de la capacité de stockage pour économiser du temp de calcul.

Dépendances

Table 2. Liste des outils utilisés
Description Dépendance Source

Système d’exploitation

GNU/Linux

http://www.getgnulinux.org/fr/switch_to_linux/try_or_install/

Interpreteur

bash

https://www.gnu.org/software/bash/

Gestion de version

git

https://git-scm.com/downloads

Base de données

SQLite3

https://www.sqlite.org/download.html

Installation

Téléchargement et import des données
git clone https://github.com/Phreno/prime-database.git
./prime-database/database/bin/primeDB_setup
Structure des fichiers
database
  • bin, fichiers d’installation de la base de données

  • data, instance de la base de données

  • lib, dépendances des fichiers d’installation

    1. base.profile Les constantes

    2. core.profile Les fonctions

    3. error.profile Gestion des erreurs (source stackoverflow)

    4. setup.profile Fonctions d’installation

  • sql, fichiers de création de la table et template d’import

  • test, pour des tests mannuels

LICENSE
  • gpl-3.0.txt, license GNU GPL v3

  • LICENSE, déclaration de permission de copie

sql
  • template, modèle de requête à mettre à jour

Usage

En assumant pour la suite du document le paramètrage suivant:

Paramètrage commun à la suite des explications
PRIME_DB="/chemin/vers/la/racine/du/projet"
DATABASE="${PRIME_DB}/database/data/primeDB.db"
SQL="${PRIME_DB}/sql"
TEMPLATE="${SQL}/template"

Utilisation de SQLite3

Sélection des 9 premiers enregistrements avec SQLite3
sqlite3 "${DATABASE}"
sqlite3 sqlite> select rowid, value from prime where rowid < 10;

# Résultat
# 2
# 3
# 5
# 7
# 11
# 13
# 17
# 19
# 23
La même requête en externalisée dans le fichier ${SQL_QUERY}
SQL_QUERY="$(mktemp)"
echo "select rowid, value from prime where rowid < 10;" > "${SQL_QUERY}"
cat "${SQL_QUERY}" | sqlite3 "${DATABASE}"

# Résultat
# 2
# 3
# 5
# 7
# 11
# 13
# 17
# 19
# 23

Utilisation du client prime-db

prime-db est un client sommaire qui encapsule le deuxième type de requête utilisé dans l’explication précédante.

Signature
${PRIME_DB}/prime-db <file.sql>
Table 3. Arguments

file.sql

obligatoire

Fichier sql qui sera joué dans SQLite3

Exemple, récupération de la plus grande valeur disponible
${PRIME_DB}/prime-db "${SQL}/query_max_value.sql"

# Résultat
# 982451653
Exemple, utilisation d’un template pour récupérer le 85460ème nombre premier
SQL_QUERY="$(mktemp)"
cat "${PRIME_TEMPLATE}/template_get_value.sql" | sed 's/#rowid/85460/g' > "${SQL_QUERY}"
${PRIME_DB}/prime-db "${SQL_QUERY}"

# Résultat
# 1096379

Commentaires

L’utilisation de SQLite3 s’est faite tardivement dans l’application, si bien que core.profile & setup.profile contiennent quelques fonctions obsolètes, qui étaient destinées pour travailler sur les fichiers plats.

Références

Numberphile

https://www.youtube.com/watch?v=iFuR97YcSLM

njwildberger

https://www.youtube.com/watch?v=z_IAB5T0Qoo&t=1864s