| Master | Heroku | |
|---|---|---|
| Tests | ||
| Berichterstattung |
Dieses Projekt konzentriert sich auf die Parsen verschiedener Datensätze, einschließlich der Daten der britischen Regierung zu Immobilienverkäufen, den Daten zur Polizeiberichterstattung und der Postleitdaten. Ziel ist es, geografische Informationen zu nutzen, um Verbindungen zwischen Postleitzahlen unter Verwendung von Breitengrad und Längengrad herzustellen.
Das Hauptziel ist es, ein skalierbares GraphQL -Backend zu entwickeln, das angeforderte Ergebnisse schnell liefern kann. Dieses Bestreben versucht, komplizierte Aspekte der Verwendung von GraphQL zu beleuchten und Herausforderungen wie das Problem von N+1 und die Skalierungsszenarien zu bewältigen, in denen mehr als eine Datenbank für Schreibknoten und Leseknoten erforderlich ist.
Zu den wichtigsten Merkmalen des Projekts gehören ein solides System für automatisierte Qualitätssicherung (QA), das anonymisierte Datensaat für umfassende QA -Tests enthält. Das Projekt untersucht auch die Flexibilität von JavaScript und überschreitet die Grenzen der Sprache. Insbesondere befasst es sich mit den Einschränkungen der Standard -V8 -Objektfelder, die auf etwa 8,4 Millionen begrenzt sind, und unterstreicht die überlegene Handhabungskapazität der Kartendatenstruktur.
Darüber hinaus enthält das Projekt ein Warteschlangensystem, um die Effizienz der Datenverarbeitung zu verbessern. Im Wesentlichen ist das Projekt eine praktische Demonstration vielfältiger und fortgeschrittener Aspekte der Softwareentwicklung, die ein Engagement für Exzellenz und Innovation widerspiegelt.
Wenn Sie make -Befehle verwenden, sind Docker und Docker-Compose erforderlich, und lokaler Knoten.js mit NPM sind optional
make -Befehle keine Schritte zusätzlich sind erforderlich, andernfalls müssen Sie $ npm i ausführen$ make test oder $ npm test$ npm test -- --coverage , Report in ./Coverage Directory gefunden$ npm test src/graphql/user.test.jsnpm run sql db:create Datenbankschema auf $ npm run sql db:migrate neuesten$ npm run sql db:seed:all$ make oder $ npm start$ make serve , es gibt kein npmäquivalent$ make build oder $ npm run build - generierte Vermögenswerte werden in ./build verzeichnet seinmake PORT=18081| Variable | Standardwert | Typ | Beschreibung |
|---|---|---|---|
| HAFEN | 8081 | Nummer | Der Port, für den die Anwendung verfügbar ist. |
| Ssl_key | Saite | Der absolute Weg zum SSL -Schlüssel (z. B. /home/ubuntu/private.key ). | |
| SSL_CERT | Saite | Der absolute Weg zum SSL -Zertifikat (z. B. /home/ubuntu/certificate.crt ). | |
| *** | *** | *** | Wenn eine Replikatkonfiguration angegeben ist, werden nicht-replica-Verbindungen nur für Schreibvorgänge verwendet. |
| Db_hostname | 127.0.0.1 | Saite | Der Host, auf dem die Datenbank erreicht werden kann. |
| Db_username | Wurzel | Saite | Der Benutzername für eine Verbindung zur Datenbank. |
| Db_password | Passwort | Saite | Das Passwort für den Datenbankbenutzer. |
| Db_port | 3306 | Nummer | Der Port, auf dem die Datenbank erreicht werden kann. |
| Db_name | erkunden | Saite | Der Name des Datenbankschemas. |
| Db_dialect | Mysql | Saite | Der Datenbank -Dialekt, eines von MySQL / SQLite / Postgres. |
| Db_replica_hostname | 127.0.0.1 | Saite | Der Host der Datenbankreplik für schreibgeschützte Operationen. |
| Db_replica_username | Wurzel | Saite | Der Benutzername für die Verbindung mit der Datenbankreplik für schreibgeschützte Operationen. |
| Db_replica_password | Passwort | Saite | Das Kennwort für den Benutzer, der eine Verbindung zum Datenbank-Replikat für schreibgeschützte Operationen herstellt. |
| NPM -Befehl | Entsprechende JS -Datei |
|---|---|
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 |
Beispiel: npm run parse:postcodes -- --file=/media/data/postcodes.csv
| Datenbank | Version | Adapter | Hauptzweck |
|---|---|---|---|
| Mysql | 8 | Mysql2 | Produktion |
| PostgreSQL | 11 | pg | Produktion |
| Sqlite | 4 | Sqlite3 | QA -Automatisierung & CI |
Wenn Sie MySQL 5.7+ verwenden, müssen Sie sicherstellen
Postrgesql und sqlite werden teilweise unterstützt, da einige der Abfragen nicht vollständig motor-agnostisch sind und einige Funktionen beispielsweise in SQLite nicht existieren