| maestro | Heroku | |
|---|---|---|
| pruebas | ||
| cobertura |
Este proyecto se centra en la analización de varios conjuntos de datos, incluidos los datos del gobierno del Reino Unido sobre las ventas de propiedades, los datos de informes policiales y los datos del código postal. El objetivo es aprovechar la información geográfica para establecer conexiones entre los códigos postales utilizando latitud y longitud.
El objetivo principal es desarrollar un backend GraphQL escalable capaz de entregar rápidamente los resultados solicitados. Este esfuerzo busca iluminar aspectos intrincados del uso de GraphQL, abordando desafíos como el problema N+1 y escenarios de escala en los que se requiere más de una base de datos para los nodos de escritura y lectura.
Las características clave del proyecto incluyen un sistema robusto de garantía de calidad automatizada (QA), que incorpora la siembra de datos anónimas para pruebas integrales de control de calidad. El proyecto también explora la flexibilidad de JavaScript, empujando los límites del idioma. En particular, profundiza en las restricciones de los campos de objetos V8 predeterminados, que están limitados a alrededor de ~ 8.4 millones, al tiempo que resalta la capacidad de manejo superior de la estructura de datos del mapa.
Además, el proyecto incorpora un sistema de cola para mejorar la eficiencia del procesamiento de datos. En esencia, el proyecto sirve como una demostración práctica de aspectos diversos y avanzados del desarrollo de software, lo que refleja un compromiso con la excelencia e innovación.
Si está utilizando comandos make , Docker y Docker-Compose son necesarios, y Node.js locales con NPM son opcionales
make no se requieren pasos adicionales, de lo contrario, debe ejecutar $ npm i$ make test o $ npm test$ npm test -- --coverage , se ubicará en el directorio ./COVERAGE$ npm test src/graphql/user.test.js$ npm run sql db:migrate , también puede crear una base de datos a través de orm npm run sql db:create$ npm run sql db:seed:all$ make o $ npm start$ make serve , no hay equivalente de NPM$ make build o $ npm run build : los activos generados se ubicarán en el directorio ./Buildmake PORT=18081| Variable | Valor predeterminado | Tipo | Descripción |
|---|---|---|---|
| PUERTO | 8081 | número | El puerto en el que estará disponible la aplicación. |
| Ssl_key | cadena | El camino absoluto a la tecla SSL (p. Ej., /home/ubuntu/private.key ). | |
| Ssl_cert | cadena | La ruta absoluta al certificado SSL (por ejemplo, /home/ubuntu/certificate.crt ). | |
| *** | *** | *** | Si se especifica la configuración de una réplica, las conexiones no replicarias se usan solo para escrituras. |
| Db_hostname | 127.0.0.1 | cadena | El host en el que se puede llegar a la base de datos. |
| Db_username | raíz | cadena | El nombre de usuario para conectarse a la base de datos. |
| Db_password | contraseña | cadena | La contraseña para el usuario de la base de datos. |
| Db_port | 3306 | número | El puerto en el que se puede llegar a la base de datos. |
| Db_name | explorar | cadena | El nombre del esquema de la base de datos. |
| Db_dialect | mysql | cadena | El dialecto de la base de datos, uno de MySQL / SQLite / Postgres. |
| Db_replica_hostname | 127.0.0.1 | cadena | El host de la réplica de la base de datos para operaciones de solo lectura. |
| DB_REPLICA_USERNAME | raíz | cadena | El nombre de usuario para conectarse a la réplica de la base de datos para operaciones de solo lectura. |
| Db_replica_password | contraseña | cadena | La contraseña para el usuario que se conecta a la réplica de la base de datos para operaciones de solo lectura. |
| Comando npm | Archivo JS correspondiente |
|---|---|
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 |
Ejemplo: npm run parse:postcodes -- --file=/media/data/postcodes.csv
| base de datos | versión | adaptador | propósito principal |
|---|---|---|---|
| Mysql | 8 | mysql2 | producción |
| Postgresql | 11 | pg | producción |
| Sqlite | 4 | sqlite3 | QA Automation & CI |
Si usa MySQL 5.7+, debe asegurarse de que pueda funcionar con la contraseña nativa de MySQL
Postrgesql y SQLite son parcialmente compatibles porque algunas de las consultas no son completamente agnósticas del motor, y algunas funciones no existen en SQLite, por ejemplo,