Commit c58510b2 authored by Jonathan Schaeffer's avatar Jonathan Schaeffer
Browse files

Préparer l'écriture dans postgres

parent 03501d8d
......@@ -12,8 +12,6 @@ Les données sont dans un ou plusieurs dossier(s) contenant un sous-dossier par
Dans le rapport final, on souhaite distinguer les réseaux permanents des expériences temporaires.
La représentation des mesures dans influxdb aura la structure suivante :
Les données collectées sont écrites en YAML dans un fichier cache.
Les données sont ensuite écrites dans une base postgres ou influxdb.
......@@ -24,13 +22,25 @@ Le script de collecte a besoin d'un fichier de configuration. Le fichier `config
Par défaut, le script collecte les données (en faisant des `du`), les compile et les écrit dans le fichier `data.yaml`.
Si les données contenues dans `data.json` ne sont pas plus anciennes que ce que spécifie la configuration `data_cache_ttl` (en jour), alors le script scanne le fichier data.json pour le restituer et n'effectue pas le scan des volumes.
Si les données contenues dans `data.yaml` ne sont pas plus anciennes que ce que spécifie la configuration `data_cache_ttl` (en jour), alors le script scanne le fichier data.json pour le restituer et n'effectue pas le scan des volumes.
### Postgres
Quelle config sur le serveur postgres ? Quelle base et quelles tables créer ?
``` sql
CREATE TYPE sismo_data_type AS ENUM('bud', 'validated')
CREATE TABLE dataholdings (network varchar(2),
year varchar(4),
station varchar(5),
channel varchar(3),
quality varchar(1),
type sismo_data_type,
size bigint,
is_permanent boolean,
date date);
```
### Influxdb
......
......@@ -10,6 +10,12 @@ volumes: # list of directories to scan
type: validated
- path: /data/all/example
type: bud
postgres:
host: postgres-server # Host serving postgres
port: 5432 # Postgres port
database: statistics # Database having the dataholdings table
user: statistics
password: statistics_secret
influxdb: # influxdb database to send reports
measurement: validated_data # measurement name
server: osug-influxdb.u-ga.fr # server name
......
......@@ -166,7 +166,7 @@ def cli(configfile):
conn = psycopg2.connect(dbname=cfg['postgres']['database'], user=cfg['postgres']['user'], host=cfg['postgres']['host'], password=cfg['postgres']['password'], port=cfg['postgres']['port'])
cur = conn.cursor()
execute_values(cur,
"""INSERT INTO datastats (network, year, station, channel, quality, type, size, is_permanent, date) VALUES %s""",
"""INSERT INTO dataholdings (network, year, station, channel, quality, type, size, is_permanent, date) VALUES %s""",
statistics,
"(%(network)s, %(year)s, %(station)s, %(channel)s, %(quality)s, %(type)s, %(size)s, %(is_permanent)s, %(date)s)")
conn.commit()
......
......@@ -6,7 +6,7 @@ with open('README.md', 'r', encoding='utf-8') as f:
setup(
name='resifdatareporter',
version='0.8.0',
version='0.10.0',
description='Scans the resif data repository and compute metrics. Sends the result in influxdb or postgres',
long_description=readme,
long_description_content_type="text/markdown",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment