Coder Social home page Coder Social logo

Comments (11)

Seb35 avatar Seb35 commented on June 7, 2024 1

Merci pour l’accès PGweb. J’ai mis en place hier soir ce que je proposais sur https://sqlite.archeo-lex.fr (format SQLite donc, probablement moins performant que PostgreSQL), et j’y ai aussi mis la base CONSTIT que j’avais créée rapidement pour #33. L’interface PGweb est un peu plus chaleureuse que celle de PHPLiteAdmin.

Reste à voir maintenant ce qu’on propose plus officiellement dans le cadre de Légilibre. Ma proposition initiale d’un sql.legilibre.fr tient toujours, mais je n’ai pas les accès au domaine, et il faudrait voir où/sur quel serveur on installe ça notamment dans le cas d’un PostgreSQL qui demanderait plus de puissance qu’un SQLite.

Aussi, mais c’est probablement l’objet d’une autre issue, ça pourra valoir le coup de regarder (voire de créer) s’il y a des interfaces web plus intuitives pour les gens qui connaissent pas ou pas beaucoup le SQL. J’ai en tête https://query.wikidata.org (language SPARQL) où des exemples de requêtes sont données et qu’il est possible d’adapter un peu, ainsi que Quarry qui permet d’accéder aux bases SQL de Wikipédia/Wikimedia (hors données privées) et qui affiche les requêtes récentes (onglet Recent Queries).

from legi.py.

Seb35 avatar Seb35 commented on June 7, 2024 1

Out of the box, la base SQLite n’a que peu d’index, donc les requêtes sont très longues. Pour ma part, je rajoute les index suivants :

CREATE INDEX textes_versions_nature ON textes_versions (nature);
CREATE INDEX textes_versions_etat ON textes_versions (etat);
CREATE INDEX textes_versions_date_debut ON textes_versions (date_debut);
CREATE INDEX textes_versions_date_fin ON textes_versions (date_fin);
CREATE INDEX textes_versions_num ON textes_versions (num);
CREATE INDEX textes_versions_nor ON textes_versions (nor);
CREATE INDEX textes_versions_date_texte ON textes_versions (date_texte);
CREATE INDEX textes_versions_cid ON textes_versions (cid);
CREATE INDEX textes_versions_mtime ON textes_versions (mtime);
CREATE INDEX articles_section ON articles (section);
CREATE INDEX articles_num ON articles (num);
CREATE INDEX articles_etat ON articles (etat);
CREATE INDEX articles_date_debut ON articles (date_debut);
CREATE INDEX articles_date_fin ON articles (date_fin);
CREATE INDEX articles_cid ON articles (cid);
CREATE INDEX sommaires_element ON sommaires (element);
CREATE INDEX sommaires_parent ON sommaires (parent);

Sinon effectivement datasette est une bonne première interface, c’est améliorable je trouve mais c’est déjà bien, et plus user-friendly que mon PHPLiteAdmin.

from legi.py.

Changaco avatar Changaco commented on June 7, 2024

J'avais déjà envisagé cela, mais les interfaces web existantes que j'avais pu trouver (notamment sqlite-web) sont conçues pour l'administration des bases de données, pas pour faciliter l'exploration d'une base publique.

Empêcher toute modification des données est techniquement plutôt simple, il suffit que le processus web n'ait accès au fichier SQLite qu'en lecture et pas en écriture. Par contre empêcher qu'un visiteur ne puisse surcharger le serveur avec des requêtes complexes est beaucoup moins évident.

from legi.py.

fenollp avatar fenollp commented on June 7, 2024

SQLite est pas fait pour être utilisé à travers un WAN. Est-ce que fournir une tarball peut être dans les release de github ou sur un site statique gratuit ne serait pas plus simple ?

from legi.py.

Changaco avatar Changaco commented on June 7, 2024

@fenollp L'intérêt d'un accès public comme proposé par @Seb35 est de ne pas avoir à télécharger et stocker toute la base soi-même. Le fichier SQLite contenant la base LEGI fait actuellement + de 3Go.

from legi.py.

revolunet avatar revolunet commented on June 7, 2024

Hello !

Je pense aussi qu'il serait judicieux de mettre à disposition une version à jour de la base. A minima sous forme de download http.

Une autre approche serait de "convertir" la base en PostgreSQL, c'est l'approche que j'ai tentée dans legi-postgres à l'aide de l'outil pgloader. ca permet de convertir le fichier SQLite en - de 10 mins puis de le rendre accessible via un client psql, gérer des utilisateurs readonly, et bénéficier des fonctionnalité de PostgreSQL... Le repo contient pas mal de code spécifique docker mais l'important c'est surtout ce fichier de conversion : legi.load.

Un exemple de comment on peut exploiter ça ensuite : https://legi.now.sh

from legi.py.

revolunet avatar revolunet commented on June 7, 2024

Un accès à PGweb pour consulter la base : https://pgweb.legi.vps.revolunet.com avec ces paramètres :
scheme : postgres://legi:legi@postgres/legi?sslmode=disable

from legi.py.

taniki avatar taniki commented on June 7, 2024

Pour explorer la base sqlite, j'utilise datasette. Ca me semble être une bonne piste pour proposer un accès en lecture et une API minimale.

from legi.py.

taniki avatar taniki commented on June 7, 2024

https://datasette.11d.im/legi/ bon c'est pas fou fou sur l'instance minimum de scaleway (dev-s)

from legi.py.

fgallaire avatar fgallaire commented on June 7, 2024

Il me semble surtout que vu la taille de la base de donnée il est très simple de mettre à genou le serveur avec une seule requête

from legi.py.

taniki avatar taniki commented on June 7, 2024

il y a un système de timeout qui devrait arrêter la requête. J'ai mis à 10 secondes pour voir mais c'est à 1 seconde par défaut. Au pire, cela bloque les accès concurrents.

from legi.py.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.