كل أنواع بيانات الأعمدة الشائعة في PostgreSQL مرتّبة حسب العائلة: الأعداد الصحيحة، والعشرية، والنصوص، والوقت، والقيم المنطقية و UUID، و JSON، وعناوين الشبكة، والأنواع المركّبة، وأنواع الامتدادات. يعرض كل صف ما يخزّنه النوع ومتى تختاره.
لدى PostgreSQL عشرات الأنواع، لكن التصميم اليومي للمخططات يعتمد على مجموعة أساسية. الخيارات المتكررة هي: integer مقابل numeric للأرقام، و varchar مقابل text للنصوص (يكفي text عادةً)، و timestamp مقابل timestamptz (فضّل timestamptz لأي شيء في العالم الحقيقي)، و json مقابل jsonb (فضّل jsonb فهو ثنائي وقابل للفهرسة). اختر النوع الأكثر تحديدًا الذي لا يزال يناسب الغرض؛ فقاعدة البيانات تفرضه نيابةً عنك.
جدول مرجعي · 46 إدخالات
أنواع بيانات PostgreSQLExplained
46 of 46 rows
الأعداد الصحيحة
عدد صحيح بحجم 2 بايت من -32768 إلى 32767.
نادرًا؛ فقط عندما تحتاج إلى توفير المساحة.
عدد صحيح بحجم 4 بايت، بنحو مليارَين موجبًا أو سالبًا.
عمود الأعداد الصحيحة الافتراضي.
عدد صحيح بحجم 8 بايت، بنحو 9 كوينتيليون موجبًا أو سالبًا.
العدّادات الكبيرة جدًا أو المعرّفات الخارجية.
عدد صحيح بحجم 4 بايت يتزايد تلقائيًا.
مفاتيح مرقّمة تلقائيًا قديمة؛ منذ PG 10 أصبح GENERATED AS IDENTITY البديل الموصى به.
نوعا serial بحجم 2 بايت و8 بايت.
ترقيم تلقائي يناسب عمود smallint أو bigint.
عدد صحيح يولّده الجدول نيابةً عنك (GENERATED ALWAYS AS IDENTITY).
البديل الحديث لـ serial؛ معياري في SQL وأكثر أمانًا من الإدراج اليدوي.
الأعداد العشرية والعائمة
أعداد عشرية دقيقة بدقة غير محدودة.
المبالغ المالية وكل حالة لا تُقبل فيها أخطاء التقريب.
عدد عائم بدقة مفردة بحجم 4 بايت.
قيم علمية تقريبية حيث لا تكون الدقة حرجة.
عدد عائم بدقة مزدوجة بحجم 8 بايت.
البيانات الجغرافية والإحصاء وقيم سمات تعلّم الآلة.
مبلغ مالي بصيغة محلية ثابتة.
نادرًا؛ numeric مع رمز عملة في التطبيق أكثر قابلية للنقل.
النصوص
نص بطول ثابت يُحشى بمسافات.
أكواد بعرض معروف؛ نادرًا ما يلزم.
نص بطول متغير مع حد اختياري.
السلاسل المحدودة مثل أسماء المستخدمين أو عناوين البريد الإلكتروني.
نص بطول متغير دون حد للطول.
عمود السلاسل العام؛ لا توجد عقوبة أداء مقارنة بـ varchar.
الوقت
تاريخ تقويمي دون وقت اليوم.
أعياد الميلاد وتواريخ الاستحقاق.
وقت من اليوم، مع منطقة زمنية أو بدونها.
المنبّهات اليومية أو ساعات العمل.
تاريخ ووقت دون منطقة زمنية.
المخططات القديمة؛ تجنّبه في الأعمال الجديدة.
تاريخ ووقت يُخزَّن بصيغة UTC ويُعرض بمنطقة العميل الزمنية.
الخيار الافتراضي لأي لحظة واقعية؛ فضّله على timestamp.
مدة زمنية، مثل يومين أو 3 ساعات.
المدد والحسابات على التواريخ.
المنطقي و UUID والبايتات
صائب أو خاطئ.
الأعلام ومفاتيح التشغيل/الإيقاف.
معرّف فريد عالميًا بطول 128 بت.
معرّفات غير تسلسلية آمنة للكشف عنها (أنشئها في التطبيق أو بـ gen_random_uuid).
بايتات ثنائية خام.
الكائنات الثنائية والصور والحمولات غير المعروفة؛ فضّل تخزين الكائنات للملفات الكبيرة.
سلاسل بتات بطول ثابت أو متغير.
الأعلام المضغوطة وحقول البروتوكول؛ قيمة التشغيل/الإيقاف المفردة تبقى boolean.
JSON والبيانات النصف مهيكلة
JSON يُحلَّل إلى صيغة ثنائية قابلة للفهرسة.
البيانات المرنة أو المتداخلة؛ عمود JSON الموصى به (يدعم فهارس GIN).
JSON يُحفظ كما هو نصًا أصليًا.
نادرًا؛ فقط عندما يجب الحفاظ على ترتيب المفاتيح أو المسافات الدقيقة.
نص XML.
التكاملات القديمة التي تتطلب XML.
تعبير مسار مُجمَّع للتنقل في بيانات JSON.
التصفية داخل jsonb باستخدام jsonb_path_query وعوامل SQL/JSON.
الشبكة والبحث
عنوان مضيف IPv4 أو IPv6.
تخزين عناوين IP للعملاء أو الخوادم.
كتلة شبكة IP، مثل 10.0.0.0/24.
قواعد الجدار الناري ونطاقات الشبكات الفرعية.
عنوان MAC بطول 6 أو 8 بايت (EUI-64).
معرّفات الأجهزة وواجهات الشبكة.
نص معالَج مسبقًا للبحث النصي الكامل.
بحث Postgres المدمج قبل اللجوء إلى محرك بحث منفصل.
مصطلحات بحث مدمجة بعوامل AND و OR وعوامل البادئة.
نصف الاستعلام في البحث النصي الكامل، ويُطابَق مع tsvector عبر @@.
موضع في سجل الكتابة المسبقة، رقم تسلسل السجل.
تأخر النسخ المتماثل ومراقبة النسخ الاحتياطي.
الأنواع المركّبة والمتقدّمة
مصفوفة من أي نوع أساسي، مثل integer[].
قوائم القيم البسيطة؛ استخدم جدولًا فرعيًا عندما تحتاج العناصر إلى أعمدة خاصة بها.
قيمة واحدة من قائمة ثابتة تحددها أنت.
حقول الحالة بمجموعة خيارات مستقرة.
نوع صف مخصص من عدة حقول.
مجموعات الحقول المتكررة المشتركة بين الجداول.
نطاق متصل بين حدين.
الجداول الزمنية ونطاقات الأسعار وامتدادات الإصدارات، مع عوامل التداخل.
نوع أساسي مغلّف بقيود تحددها أنت.
قواعد قابلة لإعادة الاستخدام مثل بريد غير فارغ، تُفرض على كل عمود يستخدمه.
صف بدون اسم من قيم مُحدَّدة الأنواع.
القيم المرجعة من دوال PL/pgSQL ونتائج الاستعلامات الوسيطة.
قيم هندسية ثنائية الأبعاد مدمجة.
الهندسة المستوية البسيطة؛ المواقع الواقعية تحتاج PostGIS.
معرّف كائن نظام بدون إشارة بحجم 4 بايت.
الربط مع أدلة النظام؛ ليس لأعمدة التطبيق.
سلسلة معرّف داخلية بطول 63 حرفًا.
استعلامات الأدلة؛ استخدم text العادي لأي شيء يواجه المستخدم.
أنواع الامتدادات
أزواج مفتاح/قيمة نصية في قيمة واحدة (امتداد).
الخرائط المسطحة؛ jsonb يغطي ذلك بشكل أفضل اليوم.
مسار تسميات هرمي مثل news.tech.ai (امتداد).
الأشجار مع استعلامات الأسلاف والسلالة.
نص يُقارن دون تمييز حالة الأحرف (امتداد).
التفرد غير الحساس لحالة الأحرف مثل البريد الإلكتروني، دون فهرس lower().
كائنات جغرافية وهندسية من امتداد PostGIS.
استعلامات المسافة والاحتواء والفهرسة المكانية.
دوال امتداد تنشئ قيم UUID.
إنشاء قديم؛ منذ PG 13 أصبحت gen_random_uuid() مدمجة.