تهيئة قاعدة البيانات ببيانات اختبار
ولّد بيانات اختبار واقعية باستخدام INSERT ... SELECT وgenerate_series، وتحقق منها باستعلامات تحليلية بسيطة.
تهيئة قاعدة البيانات ببيانات اختبار درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
لماذا نُنشئ بيانات أولية؟
تخفي قواعد البيانات الفارغة الأخطاء. أنتم بحاجة إلى بيانات واقعية:
- لتشغيل اختبارات واجهة المستخدم واختبارات E2E
- للتحقق من خصائص الأداء (الفهارس وخطط الاستعلامات)
- لعرض التطبيق
بيانات أولية مكتوبة يدويًا
بالنسبة إلى عدد قليل من صفوف «fixture»، اكتبوا الصفوف يدويًا في SQL أو في migration:
INSERT INTO users (id, email, full_name) VALUES
(1, 'alice@example.com', 'Alice Adams'),
(2, 'bob@example.com', 'Bob Brown');
SELECT setval('users_id_seq', (SELECT MAX(id) FROM users));generate_series للبيانات بالجملة
generate_series أداة مفيدة لكم. أنشئوا 1000 منشور:
INSERT INTO posts (author_id, title, body, published_at)
SELECT
((random() * 9 + 1)::int), -- random user 1-10
'Post number ' || g,
'Lorem ipsum body ' || g,
NOW() - (random() * INTERVAL '90 days')
FROM generate_series(1, 1000) AS g;مفاتيح خارجية عشوائية
اختاروا صفًا أبًا عشوائيًا:
INSERT INTO comments (post_id, author_id, body)
SELECT
(SELECT id FROM posts ORDER BY random() LIMIT 1),
(SELECT id FROM users ORDER BY random() LIMIT 1),
'Sample comment ' || g
FROM generate_series(1, 5000) AS g;
-- Slow at scale — see next slide for a faster pattern.أسرع: خزّنوا السجلات الأصلية مؤقتًا مسبقًا
أنشئوا معرّفات المرشحين ماديًا مرة واحدة:
WITH u AS (SELECT id FROM users),
p AS (SELECT id FROM posts)
INSERT INTO comments (post_id, author_id, body)
SELECT
(SELECT id FROM p OFFSET floor(random()*1000)::int LIMIT 1),
(SELECT id FROM u OFFSET floor(random()*10)::int LIMIT 1),
'Sample comment ' || g
FROM generate_series(1, 5000) AS g;faker_fdw والأدوات
للحصول على بيانات وهمية أكثر تنوعًا (أسماء وعناوين وفقرات)، استخدموا:
faker_fdw— امتداد Postgres يوفّر Python Faker-
@faker-js/fakerفي Node - أدوات seeders في Django/Rails على شكل نصوص برمجية
COPY للاستيرادات الكبيرة بالجملة
لتحميل مليون صف، يتفوق COPY على INSERT بمقدار 5–10 مرات:
COPY users (email, full_name)
FROM '/tmp/seed_users.csv' WITH (FORMAT csv, HEADER true);إعادة ضبط التسلسلات
إذا أدرجتم صفوفًا يدويًا باستخدام معرّفات صريحة، فحرّكوا التسلسل إلى الأمام حتى لا تتعارض المعرّفات التلقائية المستقبلية:
SELECT setval('users_id_seq', (SELECT COALESCE(MAX(id), 0) FROM users));بيانات أولية آمنة عند التكرار
اجعلوا تشغيل البيانات الأولية آمنًا عدة مرات. استخدموا UPSERT أو TRUNCATE-then-INSERT:
INSERT INTO products (sku, name, price) VALUES
('A-001', 'Widget', 9.99)
ON CONFLICT (sku) DO UPDATE
SET name = EXCLUDED.name, price = EXCLUDED.price;توزيع واقعي
ينبغي أن تعكس الاختبارات شكل بيئة الإنتاج. فإذا كان لدى 80% من المنشورات صفر من التعليقات، ولدى 1% منها 1000 تعليق، فينبغي أن تبدو بيانات الاختبار كذلك، وإلا فستضللكم خطط الفهارس.
إنشاء البيانات الأولية في CI
بالنسبة إلى اختبارات من البداية إلى النهاية، شغّلوا نص البيانات الأولية بعد عمليات الترحيل وقبل مجموعة الاختبارات. احتفظوا بالبيانات الأولية في نظام التحكم بالإصدارات.
مراجعة
البيانات الأولية الجيدة = بيانات واقعية + نص قابل للتكرار بأمان + تحميل سريع (استخدموا COPY للبيانات الكبيرة).
- generate_series للبيانات بالجملة
- UPSERT للتشغيلات المتكررة
- setval بعد عمليات الإدراج اليدوية
- مطابقة توزيعات بيئة الإنتاج
تحقق سريع
تريدون إدراج 10,000 صف من بيانات الاختبار بسرعة. ما دالة PostgreSQL التي تنشئ أرقام الصفوف؟
الأسئلة الشائعة
هل درس «تهيئة قاعدة البيانات ببيانات اختبار» مجاني؟
نعم — نص درس «تهيئة قاعدة البيانات ببيانات اختبار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «تهيئة قاعدة البيانات ببيانات اختبار»؟
ولّد بيانات اختبار واقعية باستخدام INSERT ... SELECT وgenerate_series، وتحقق منها باستعلامات تحليلية بسيطة. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تهيئة قاعدة البيانات ببيانات اختبار»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نمذجة مدونة: المستخدمون والمنشورات والتعليقات
- اختيار المفاتيح والأنواع
- الفهارس للاستعلامات الشائعة
- تهيئة قاعدة البيانات ببيانات اختبار