| maître | Heroku | |
|---|---|---|
| tests | ||
| couverture |
Ce projet est centré sur l'analyse de divers ensembles de données, notamment les données du gouvernement britannique sur les ventes de biens, les données de rapport de la police et les données post-code. L'objectif est d'exploiter des informations géographiques pour établir des connexions entre les codes postaux en utilisant la latitude et la longitude.
L'objectif principal est de développer un backend GraphQL évolutif capable de fournir rapidement des résultats demandés. Cette entreprise cherche à éclairer des aspects complexes de l'utilisation de GraphQL, à relever des défis comme le problème N + 1 et les scénarios de mise à l'échelle où plus d'une base de données est requise pour les nœuds d'écriture et de lecture.
Les principales caractéristiques du projet incluent un système robuste d'assurance de qualité automatisée (QA), incorporant un semis de données anonymisé pour des tests QA complets. Le projet explore également la flexibilité de JavaScript, repoussant les limites de la langue. Notamment, il plonge dans les contraintes des champs d'objet V8 par défaut, qui sont plafonnés à environ 8,4 millions, tout en mettant en évidence la capacité de manipulation supérieure de la structure des données de la carte.
De plus, le projet intègre un système de file d'attente pour améliorer l'efficacité du traitement des données. Essentiellement, le projet sert de démonstration pratique d'aspects divers et avancés du développement de logiciels, reflétant un engagement envers l'excellence et l'innovation.
Si vous utilisez des commandes make , Docker et Docker-Compose sont requis, et Node.js local avec NPM est facultatif
make aucune étape supplémentaire n'est requise, sinon vous devez exécuter $ npm i$ make test ou $ npm test$ npm test -- --coverage , le rapport sera situé dans ./Coverage Directory$ npm test src/graphql/user.test.js$ npm run sql db:migrate , vous pouvez également créer une base de données via Orm npm run sql db:create$ npm run sql db:seed:all$ make ou $ npm start$ make serve , il n'y a pas d'équivalent NPM$ make build ou $ npm run build - les actifs générés seront situés dans le répertoire ./Buildmake PORT=18081| Variable | Valeur par défaut | Taper | Description |
|---|---|---|---|
| PORT | 8081 | nombre | Le port sur lequel l'application sera disponible. |
| Ssl_key | chaîne | Le chemin absolu vers la clé SSL (par exemple, /home/ubuntu/private.key ). | |
| Ssl_cert | chaîne | Le chemin absolu vers le certificat SSL (par exemple, /home/ubuntu/certificate.crt ). | |
| *** | *** | *** | Si la configuration d'une réplique est spécifiée, les connexions non replica sont utilisées uniquement pour les écritures. |
| Db_hostname | 127.0.0.1 | chaîne | L'hôte sur lequel la base de données peut être atteinte. |
| Db_username | racine | chaîne | Le nom d'utilisateur pour se connecter à la base de données. |
| Db_password | mot de passe | chaîne | Le mot de passe de l'utilisateur de la base de données. |
| Db_port | 3306 | nombre | Le port sur lequel la base de données peut être atteinte. |
| Db_name | explorer | chaîne | Le nom du schéma de base de données. |
| Db_dialect | mysql | chaîne | Le dialecte de la base de données, l'un des MySQL / SQLite / Postgres. |
| Db_replica_hostname | 127.0.0.1 | chaîne | L'hôte de la réplique de la base de données pour les opérations en lecture seule. |
| DB_REPLICA_UNERNAME | racine | chaîne | Le nom d'utilisateur pour se connecter à la réplique de la base de données pour les opérations en lecture seule. |
| Db_replica_password | mot de passe | chaîne | Le mot de passe de l'utilisateur se connectant à la réplique de la base de données pour les opérations en lecture seule. |
| Commande npm | Fichier JS correspondant |
|---|---|
parse:postcodes | src/parse:postcodes |
parse:postcodes:lsoa | src/parse:postcodes:lsoa |
parse:incidents | src/parse:markers:and:incidents |
parse:properties | src/parse:markers:and:properties |
parse:areas | src/parse:areas |
parse:timelines | src/parse:timelines |
Exemple: npm run parse:postcodes -- --file=/media/data/postcodes.csv
| base de données | version | adaptateur | objectif principal |
|---|---|---|---|
| Mysql | 8 | mysql2 | production |
| Postgresql | 11 | p. | production |
| Sqlite | 4 | sqlite3 | QA Automation & CI |
Si vous utilisez MySQL 5.7+, vous devez vous assurer qu'il peut fonctionner avec le mot de passe natif MySQL
PosTrGesQL et Sqlite sont partiellement pris en charge parce que certaines des requêtes ne sont pas entièrement agnostiques du moteur, et certaines fonctions n'existent pas dans SQLite par exemple