| владелец | Хероку | |
|---|---|---|
| тесты | ||
| покрытие |
Этот проект сосредоточен на основе анализа различных наборов данных, включая правительственные данные Великобритании о продажах недвижимости, данные полицейской отчетности и данные после кода. Цель состоит в том, чтобы использовать географическую информацию для установления связей между почтовыми индексами с использованием широты и долготы.
Основная цель состоит в том, чтобы разработать масштабируемый бэкэнд GraphQL, способный быстро доставить запрошенные результаты. Это усилие стремится осветить сложные аспекты использования GraphQL, решая проблемы, такие как задача n+1 и сценарии масштабирования, когда для узлов записи и чтения требуется более одной базы данных.
Ключевые функции проекта включают надежную систему автоматического обеспечения качества (QA), включающая анонимные данные для получения комплексного тестирования QA. Проект также исследует гибкость JavaScript, раздвигая границы языка. Примечательно, что он углубляется в ограничения полей объектов V8 по умолчанию, которые ограничены около 8,4 миллионами, при этом выделяя превосходную способность обработки структуры данных.
Кроме того, проект включает в себя систему очередей для повышения эффективности обработки данных. По сути, проект служит практической демонстрацией разнообразных и передовых аспектов разработки программного обеспечения, отражая приверженность совершенству и инновациям.
Если вы используете команды make , требуются Docker и Docker-Compose , а локальный Node.js с NPM являются необязательными
make нет дополнительных шагов. Дополнительные, в противном случае вам нужно выполнить $ npm i$ make test или $ npm test$ npm test -- --coverage , отчет будет расположен в каталоге ./coverage$ npm test src/graphql/user.test.js$ npm run sql db:migrate , вы также можете создать базу данных с помощью ORM npm run sql db:create$ npm run sql db:seed:all$ make или $ npm start$ make serve , нет эквивалента NPM$ make build или $ npm run build - Сгенерированные активы будут расположены в каталоге ./Buildmake PORT=18081| Переменная | Значение по умолчанию | Тип | Описание |
|---|---|---|---|
| Порт | 8081 | число | Порт, на котором будет доступно приложение. |
| Ssl_key | нить | Абсолютный путь к ключу SSL (например, /home/ubuntu/private.key ). | |
| Ssl_cert | нить | Абсолютный путь к сертификату SSL (например, /home/ubuntu/certificate.crt ). | |
| *** | *** | *** | Если указана конфигурация реплики, подключения без реплики используются только для записей. |
| Db_hostname | 127.0.0.1 | нить | Хост, на котором может быть достигнута база данных. |
| Db_username | корень | нить | Имя пользователя для подключения к базе данных. |
| Db_password | пароль | нить | Пароль для пользователя базы данных. |
| DB_PORT | 3306 | число | Порт, по которому может быть достигнута база данных. |
| Db_name | исследовать | нить | Имя схемы базы данных. |
| Db_dialect | mysql | нить | Диалект базы данных, один из MySQL / SQLite / Postgres. |
| Db_replica_hostname | 127.0.0.1 | нить | Хост реплики базы данных для операций только для чтения. |
| Db_replica_username | корень | нить | Имя пользователя для подключения к реплике базы данных для операций только для чтения. |
| Db_replica_password | пароль | нить | Пароль для пользователя, подключенного к реплике базы данных для операций только для чтения. |
| Команда NPM | соответствующий файл JS |
|---|---|
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 |
Пример: npm run parse:postcodes -- --file=/media/data/postcodes.csv
| база данных | версия | адаптер | Основная цель |
|---|---|---|---|
| Mysql | 8 | mysql2 | производство |
| Postgresql | 11 | пг | производство |
| SQLite | 4 | SQLite3 | QA Automation & CI |
Если вы используете MySQL 5.7+, вам нужно убедиться, что он может работать с собственным паролем MySQL
PostrgesQL и SQLite частично поддерживаются, потому что некоторые запросы не являются полностью агрессическими двигателями, а некоторые функции не существуют в SQLite, например, например,