أنماط قواعد البيانات
Database Patterns
مفهوم
~20 دقيقة
أنماط قواعد البيانات — Database Patterns
بعد تعلم الأساسيات، حان وقت الأنماط الاحترافية التي تُنظّم كودك وتجعله قابلاً للصيانة والاختبار.
نمط Repository
يفصل منطق الوصول للبيانات عن منطق الأعمال. بدلاً من كتابة SQL في كل مكان، تُغلّفه في طبقة واحدة:
main.go
Output:
لماذا Repository مهم:
- الاختبار — استبدل التنفيذ الحقيقي بتنفيذ وهمي (mock)
- المرونة — بدّل من PostgreSQL لـ MySQL بتغيير التنفيذ فقط
- الفصل — منطق الأعمال لا يعرف شيئاً عن SQL
مسح البنيات — Struct Scanning
database/sql يتطلب مسح كل حقل يدوياً. هذا مُرهق مع بنيات كبيرة:
main.go
Output:
مفهوم الترحيل — Migrations
الترحيلات تُدير تطور بنية قاعدة البيانات مع الوقت:
main.go
Output:
مقارنة الأدوات
| الأداة | النوع | المستوى | الاستخدام |
|---|---|---|---|
database/sql | قياسي | منخفض | تحكم كامل |
sqlx | مكتبة مساعدة | متوسط | database/sql + راحة |
GORM | ORM كامل | عالي | تطوير سريع |
sqlc | مولّد كود | متوسط | SQL → Go code |
نصيحة أخيرة
ابدأ بـ database/sql لفهم الأساسيات، ثم انتقل لـ sqlx للمشاريع الحقيقية. GORM مناسب إذا كنت تأتي من عالم ORM (Django, Laravel) وتريد نفس التجربة.
تحدي — Challenge
أنشئ repository بسيط وأضف مستخدمين واقرأهم