| ผู้เชี่ยวชาญ | Heroku | |
|---|---|---|
| การทดสอบ | ||
| ความครอบคลุม |
โครงการนี้มีศูนย์กลางอยู่ที่การแยกวิเคราะห์ชุดข้อมูลต่าง ๆ รวมถึงข้อมูลรัฐบาลของสหราชอาณาจักรเกี่ยวกับการขายอสังหาริมทรัพย์ข้อมูลการรายงานของตำรวจและข้อมูลโพสต์รหัส เป้าหมายคือการควบคุมข้อมูลทางภูมิศาสตร์เพื่อสร้างการเชื่อมต่อระหว่างรหัสไปรษณีย์โดยใช้ละติจูดและลองจิจูด
วัตถุประสงค์หลักคือการพัฒนาแบ็กเอนด์ GraphQL ที่ปรับขนาดได้ซึ่งสามารถส่งมอบผลลัพธ์ที่ร้องขอได้อย่างรวดเร็ว ความพยายามนี้พยายามที่จะส่องสว่างด้านที่ซับซ้อนของการใช้ GraphQL การจัดการกับความท้าทายเช่นปัญหา N+1 และสถานการณ์การปรับขนาดซึ่งจำเป็นต้องใช้ฐานข้อมูลมากกว่าหนึ่งฐานข้อมูลสำหรับทั้งการเขียนและการอ่านโหนด
คุณสมบัติที่สำคัญของโครงการรวมถึงระบบการประกันคุณภาพอัตโนมัติที่แข็งแกร่ง (QA) ซึ่งรวมการเพาะข้อมูลข้อมูลที่ไม่ระบุชื่อสำหรับการทดสอบ QA ที่ครอบคลุม โครงการยังสำรวจความยืดหยุ่นของ JavaScript ผลักดันขอบเขตของภาษา โดยเฉพาะอย่างยิ่งมันเจาะลึกลงไปในข้อ จำกัด ของฟิลด์วัตถุ V8 เริ่มต้นซึ่งต่อยอดอยู่ที่ประมาณ ~ 8.4 ล้านในขณะที่เน้นความสามารถในการจัดการที่เหนือกว่าของโครงสร้างข้อมูลแผนที่
นอกจากนี้โครงการยังรวมระบบคิวเพื่อเพิ่มประสิทธิภาพของการประมวลผลข้อมูล ในสาระสำคัญโครงการทำหน้าที่เป็นการสาธิตเชิงปฏิบัติในแง่มุมที่หลากหลายและสูงของการพัฒนาซอฟต์แวร์สะท้อนให้เห็นถึงความมุ่งมั่นสู่ความเป็นเลิศและนวัตกรรม
หากคุณใช้คำสั่ง make , Docker และ Docker-compose และ local node.js กับ NPM เป็นทางเลือก
make ไม่จำเป็นต้องมีขั้นตอนเพิ่มเติมไม่เช่นนั้นคุณต้องดำเนินการ $ npm i$ make test หรือ $ npm test$ npm test -- --coverage รายงานจะอยู่ใน ./coverage directory$ 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 | สาย | Database Dialect หนึ่งใน 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 & CI |
หากคุณใช้ MySQL 5.7+ คุณต้องตรวจสอบให้แน่ใจ
PostrgesQl และ SQLite ได้รับการสนับสนุนบางส่วนเนื่องจากการสืบค้นบางส่วนไม่ได้เป็นเครื่องยนต์ที่ไม่เชื่อเรื่องพระเจ้าอย่างสมบูรณ์และฟังก์ชั่นบางอย่างไม่มีอยู่ใน SQLite เช่น