ฉันจะให้คำตอบตามไฟล์ readme ของตัวสร้าง SQL แบบกำหนดเองของฉัน ( Dialect )
(ตามด้วยข้อความธรรมดาลบการอ้างอิงเฉพาะไลบรารีออก)
ความต้องการ
- รองรับผู้ค้าฐานข้อมูลหลายราย (เช่น MySQL, PostgreSQL, SQLite, MS SQL / SQL Server, Oracle, DB2, .. )
- ขยายไปยังฐานข้อมูลใหม่ได้อย่างง่ายดาย (ผ่านการตั้งค่าแบบไม่ใช้งาน, การปรับใช้)
- ความเป็นโมดุลและความสามารถในการถ่ายโอนได้อย่างอิสระ
- API ที่ยืดหยุ่นและใช้งานง่าย
คุณสมบัติ
- เทมเพลตที่ใช้ไวยากรณ์
- การสนับสนุนมุมมองที่กำหนดเองนุ่ม
- db abstraction, modularity และ transferability
- แม่แบบที่เตรียมไว้
- การหลบหนีข้อมูล
ฉันคิดว่าคุณสมบัติและข้อกำหนดข้างต้นแสดงเหตุผลที่จะใช้ตัวสร้างนามธรรมของ SQL
คุณสมบัติส่วนใหญ่ข้างต้นได้รับการสนับสนุนโดยผู้สร้าง SQL ส่วนใหญ่ (แม้ว่าฉันไม่คิดว่าทุกคนจะได้รับการสนับสนุนตามความรู้ของฉัน)
ตัวอย่างการใช้งาน:
- แพลตฟอร์ม CMS สามารถทำงานได้ (โดยไม่มีการเปลี่ยนแปลงโค้ดพื้นฐาน) กับผู้ขาย DB หลายราย
- รหัสแอปพลิเคชันที่กำหนดเองซึ่งผู้ขาย DB สามารถเปลี่ยนแปลงได้และ / หรือ schema ของ dB เป็นแบบไดนามิก (ซึ่งหมายความว่าแบบสอบถามจำนวนมากไม่สามารถกำหนดรหัสยาก แต่ยังคงต้องมีบทคัดย่อพอเพื่อให้รหัสมีความแข็งแกร่งต่อการเปลี่ยนแปลง)
- การสร้างต้นแบบที่มีฐานข้อมูลอื่นมากกว่าที่ใช้ในการผลิต (จะต้องใช้รหัสฐานซ้ำกันอย่างน้อยสำหรับรหัสบางส่วน)
- รหัสแอปพลิเคชันไม่แน่นหนาเข้ากับผู้ให้บริการฐานข้อมูลและ / หรือการนำไปใช้ (แม้จะอยู่ในผู้จำหน่ายฐานข้อมูลเดียวกันเช่นผู้จำหน่ายฐานข้อมูลรุ่นต่าง ๆ ) ดังนั้นจึงมีความแข็งแกร่งยืดหยุ่นและเป็นโมดูลมากกว่า
- หลายกรณีปกติของแบบสอบถามและการหลบหนีข้อมูลได้รับการจัดการโดยกรอบงานของตัวเองและปกตินี้เป็นทั้งที่ดีที่สุดและเร็วขึ้น
Finaly ตัวอย่างของการใช้งานที่ฉันมี ฉันกำลังสร้างแอปพลิเคชันที่ DB schema (wordpress) ไม่เหมาะสำหรับประเภทของการสืบค้นข้อมูลที่จำเป็นต้องทำรวมทั้งตาราง WP บางรายการ (เช่นโพสต์) ต้องถูกใช้ (เพื่อให้มีตารางใหม่อย่างสมบูรณ์ สำหรับข้อมูลแอปพลิเคชันทั้งหมดไม่ใช่ตัวเลือก)
ในกรณีดังกล่าวความสามารถในการสร้างแอปพลิเคชันที่เหมือน MVC ซึ่งแบบจำลองสามารถถูกสอบถามได้โดยเงื่อนไขที่กำหนดเอง / แบบไดนามิกทำให้การสืบค้นด้วยรหัสยากเกือบเป็นฝันร้าย ลองนึกภาพว่าต้องมีการสนับสนุนการสืบค้นอาจมีมากถึง 2-3 ตารางด้วยการรวมและกรองเงื่อนไขเพื่อดูว่าตารางใดที่จะเข้าร่วมกับอะไรและยังดูแลนามแฝงที่จำเป็นและอื่น ๆ
เห็นได้ชัดว่านี่เป็นคำถามการใช้งานที่เป็นนามธรรมและยิ่งไปกว่านั้นมันต้องการ (หรืออย่างน้อยก็ได้รับประโยชน์อย่างมากจาก) ที่มีความสามารถในการกำหนดมุมมองที่กำหนดเองนุ่ม ๆ (กลุ่มของตารางที่เข้าร่วม . จากนั้นมันง่ายขึ้นสะอาดกว่าโมดูลาร์และมีความยืดหยุ่น ในอีกด้านหนึ่งแอปพลิเคชัน (รหัส) ยังใช้เลเยอร์ abstraction แบบสอบถามเป็นเครื่องมือการปรับมาตรฐาน (db schema) บางคนบอกว่ามันเป็นหลักฐานในอนาคตหลักฐานในอนาคต
หากในวันพรุ่งนี้ผู้คนตัดสินใจว่าพวกเขาต้องการตัวเลือกหรือข้อมูลเพิ่มเติมบางอย่างมันเป็นเรื่องง่ายมากที่จะเพิ่มเข้าไปในโมเดลในสองบรรทัดและทำงานได้ดี นอกจากนี้ถ้าพรุ่งนี้ผู้คนตัดสินใจว่าพวกเขาไม่ต้องการใช้เวิร์ดเพรสอีกต่อไป (เนื่องจากแอพพลิเคชั่นเป็นแบบคู่กับเวิร์ดเพรสเป็นปลั๊กอิน) มันค่อนข้างง่ายที่จะเปลี่ยน ( เพียงแค่นิยามของ) โมเดลในสองบรรทัด ของรหัสเพื่อปรับให้เข้ากับสคีมาใหม่
ดูว่าฉันหมายถึงอะไร