Rust

Database Integration

SQLx, Diesel, การเข้าถึงฐานข้อมูลแบบ async, connection pooling, migration, query builder, รูปแบบ ORM

20 คำถามสัมภาษณ์·
Senior
1

ความแตกต่างหลักระหว่าง SQLx และ Diesel ในด้านการตรวจสอบ query คืออะไร?

คำตอบ

SQLx ทำการตรวจสอบ query ในเวลาคอมไพล์โดยเชื่อมต่อกับฐานข้อมูลจริงระหว่างกระบวนการ build ส่วน Diesel ใช้ DSL (Domain-Specific Language) ของ Rust เพื่อสร้าง query ที่ type-safe โดยไม่ต้องเชื่อมต่อฐานข้อมูลในเวลาคอมไพล์ ทั้งสองแนวทางรับประกันความปลอดภัยของชนิดข้อมูล แต่ SQLx อนุญาตให้เขียน raw SQL ที่ผ่านการตรวจสอบแล้ว ในขณะที่ Diesel บังคับให้ใช้ Rust API ของมัน

2

ใน SQLx มาโครใดที่อนุญาตให้รัน query และแมปผลลัพธ์ไปยัง struct ของ Rust โดยอัตโนมัติ?

คำตอบ

มาโคร query_as! ของ SQLx รัน query SQL และแมปผลลัพธ์ไปยัง struct ของ Rust ที่ระบุโดยอัตโนมัติ มาโครนี้ตรวจสอบในเวลาคอมไพล์ว่าคอลัมน์ที่ส่งกลับตรงกับฟิลด์ของ struct เพื่อรับประกันความปลอดภัยของชนิดข้อมูล มาโคร query! ส่งคืนชนิดแบบนิรนาม ในขณะที่ query_scalar! ใช้สำหรับดึงค่าเดี่ยว

3

จะกำหนดค่า connection pool ด้วย SQLx สำหรับแอปพลิเคชัน PostgreSQL แบบ async ได้อย่างไร?

คำตอบ

SQLx ใช้ PgPoolOptions เพื่อกำหนดค่า connection pool ของ PostgreSQL แบบ async เมธอด max_connections กำหนดจำนวนการเชื่อมต่อสูงสุด และ connect สร้าง pool จาก URL ของฐานข้อมูล pool จะจัดการการขอและคืนการเชื่อมต่อโดยอัตโนมัติ และรองรับ timeout และ retry ที่กำหนดค่าได้

4

ใน Diesel จะกำหนด schema ของตารางเพื่อเปิดใช้งานการดำเนินการ CRUD แบบ type-safe ได้อย่างไร?

5

struct ต้อง implement Diesel trait ใดเพื่อแทรกข้อมูลลงในตาราง?

+17 คำถามสัมภาษณ์

เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี