مقارنة Postgresql و MS SQL اختيار قاعدة بيانات بين mysql وpostgresql وmariadb وmssql؟ مقارنة MySQL وPostgreSQL: أوجه التشابه والاختلاف

من الصعب العثور على منظمة لا تستخدم أنظمة المحاسبة من 1C - حتى في الحيازات الضخمة، حيث تم تنفيذ SAP أو OEBS لفترة طويلة، يتم استخدامها دائمًا تقريبًا في منطقة أو أخرى. إنه لمن دواعي السرور أن برامج التطبيقات الروسية أصبحت المعيار الفعلي لشركاتنا، ولكن هناك دقة واحدة: أصبح استخدام Microsoft SQL Server كنظام إدارة قواعد البيانات معيارًا فعليًا بنفس القدر لـ 1C:Enterprise نفسها.

من بين ممارسي 1C، الرأي الأكثر شيوعًا هو أنه بدون أنظمة إدارة قواعد البيانات التجارية من الشركات المصنعة الأمريكية، لن يأتي أي شيء جيد، كما يقولون، عدة مئات من المستخدمين يحتاجون حتمًا إلى تثبيت قاعدة بيانات على MS SQL أو Oracle Database أو IBM DB2 في هذه الحالة. اختلفت آراء الممارسين المعروفين لدينا حول العمل في ظل حرية PostgreSQL DBMS، ولكن في النطاق من "لا يعمل على الإطلاق" إلى "مناسب لعدة عشرات من المستخدمين، لا أكثر".

كان هناك عدد من التفسيرات المعقولة لمثل هذه التقديرات المتواضعة: الاستخدام النشط لآليات الجدول المؤقت بواسطة منصات 1C (والتي يتم تنفيذها في Postgres "بصراحة" للغاية - مع DDL للمعاملات، وجميع إمكانيات الاسترداد)، وميزات العمل مع البيانات النصية (بينما في مجال النصوص متعددة اللغات، فإن Vanilla Postgres، مرة أخرى، محافظة للغاية، ولا تستخدم مكتبات النظام الأكثر أداءً)، وعدد من الجوانب الأخرى الأقل أهمية.

لكننا آمنا سرًا بـ Postgres، خاصة وأن الجمعية ادعت أنها تحل كل تلك المشكلات التي استخدمها المتشككون لتبرير اختيار نظام إدارة قواعد البيانات التجاري. بالإضافة إلى ذلك، كان من المهم بالنسبة لنا الحصول على مؤشرات الوجهة لمجمع الأجهزة والبرامج - محرك قاعدة بيانات لنظام إدارة قواعد البيانات، مبني على أساس المعدات والبرامج الآمنة للعقوبات، التي طورتها IBS مع Postgres Professional.

من بين التطبيقات المكررة، يجب أن يكون التطبيق الأكثر وضوحًا لمثل هذه الآلة، بالطبع، هو أنظمة 1C. ونتائج المعايير التي تم تنفيذها نقلتنا بالكامل من فئة "المؤمنين السريين" (وحتى المشككين) إلى فئة "المقتنعين": الآن يمكننا أن نقول بأمان أن الإصدار 1C:Enterprise 8.3 على PostgreSQL EE 1.5 مصمم لـ يعمل Skala-SR / PostgreSQL بشكل أفضل من MS SQL 2012 على نفس الجهاز مع جميع التحسينات الممكنة.

لذلك، بعض تفاصيل التجارب. فيما يتعلق باختبار الأداء، فإن 1C لديه كل شيء بشكل منهجي وعلمي - هناك تكوين قياسي "اختبار الحمل القياسي"، الذي يتم من خلاله إطلاق المعيار، وإضافة مستخدمين جدد تدريجيًا إلى الحمل حتى يستجيب التطبيق بدرجة كافية للعمل المريح. (بشكل أكثر دقة، تتم إضافة المستخدمين حتى تنخفض درجة أداء تطبيق Apdex القياسية إلى أقل من 0.85، ويعتبر الحد الأقصى لعدد هؤلاء المستخدمين ذوي الأداء الفعال هو النتيجة المعيارية.)

استخدمنا الإصدار 8.3.9.1850 من 1C:Enterprise، واختبار التحميل القياسي في الإصدار 2.0.17.36. في البداية، تقرر عدم إعطاء أي خصومات لـ Postgres: نقوم بإجراء أقصى قدر من التحسينات على MS SQL على عقدة من مجمع Skala-SR / PostgreSQL (نقوم بتثبيت Windows على المعدن، وقم بتكوينه وفقًا لجميع الشرائع، من أجل السرعة، قم بإنشاء قرص ذاكرة للجداول المؤقتة)، ثم نعيد نفس العقدة إلى مجمع Scala-SR، ونقوم بتثبيت Linux وPostgres Pro EE، وعليها وحدها (بدون شرائح المجموعة المتوفرة في المجمع) نجري نفس الاختبار.

الاختبار الأول: نبدأ بـ 100 مهمة، وعبء العمل هو 50/50 - نصفها يُنشئ المستندات، والنصف الآخر يُنشئ التقارير. الاختبار الثاني: ابدأ بـ 400، وحمل 70/30. "انتهى" MS SQL في الاختبار الأول مع 360 مستخدمًا، وفي الاختبار الثاني مع 540 مستخدمًا، وكان المحدد في كلا التشغيلين يعمل مع الإدخال/الإخراج المحلي، على الرغم من حقيقة أنه تم تحميل المعالج في المتوسط ​​بنسبة 30% فقط. وصلت PostgreSQL إلى 440 مهمة في الاختبار الأول، وما يصل إلى 660 في الاختبار الثاني، ولكن على خادم قاعدة البيانات، كان كل شيء يعود إلى المعالج، الذي تم تحميله بنسبة تزيد عن 90% على "الحد الأقصى من المستخدمين".

بالنسبة لـ 1C، حيث يكون عدد المستخدمين المتزامنين هو العامل المحدد الأكثر إشكالية، فهذه نتيجة رائعة، والأهم من ذلك، أنها تشير إلى أن أنظمة التطبيقات الروسية الأكثر أهمية لا يمكنها العمل فقط بدون أنظمة إدارة قواعد البيانات التجارية الغربية، بل إنها تعمل بشكل أفضل بكثير .

سلسلة المحتوى:

1. تاريخ تطور MySQL وPostgreSQL

يبدأ تاريخ MySQL في عام 1979، حيث كانت نشأتها شركة صغيرة بقيادة مونتي ويدنيوس. في عام 1996، ظهر الإصدار الأول 3.11 لـ Solaris بترخيص عام. ثم تم نقل MySQL إلى أنظمة تشغيل أخرى، وظهر ترخيص تجاري خاص. في عام 2000، بعد إضافة واجهة مشابهة لـ Berkeley DB، أصبحت قاعدة البيانات معاملات. تمت إضافة النسخ المتماثل في نفس الوقت تقريبًا. في عام 2001، أضاف الإصدار 4.0 محرك InnoDB إلى MyISAM الحالي، مما أدى إلى التخزين المؤقت وزيادة الأداء. في عام 2004، تم إصدار الإصدار 4.1، الذي قدم الاستعلامات الفرعية والفهرسة الجزئية لـ MyISAM وUnicode. في الإصدار 5.0 في عام 2005، ظهرت الإجراءات المخزنة والمؤشرات والمشغلات وطرق العرض. تقوم MySQL بتطوير الاتجاهات التجارية: في عام 2009، أصبحت MySQL علامة تجارية لشركة Oracle.

بدأ تاريخ Postgres في عام 1977 مع قاعدة بيانات Ingress.

وفي عام 1986، تم تغيير اسمها إلى PostgreSQL في جامعة بيركلي، كاليفورنيا.

في عام 1995، أصبحت Postgres قاعدة بيانات مفتوحة. ظهر Psql التفاعلي.

في عام 1996، تمت إعادة تسمية Postgres95 إلى PostgreSQL الإصدار 6.0.

لدى Postgres عدة مئات من المطورين حول العالم.

2. بنية MySQL وPostgreSQL

PostgreSQL- خادم قاعدة بيانات موحد بمحرك واحد - محرك تخزين. يستخدم Postgres نموذج خادم العميل.

لكل عميل، يتم إنشاء عملية جديدة (وليست سلسلة رسائل!) على الخادم. للعمل مع عمليات العميل هذه، يستخدم الخادم الإشارات.

يمر طلب العميل بالمراحل التالية.

  1. يتصل.
  2. التحليل: يتم التحقق من صحة الطلب وإنشاء شجرة استعلام. يعتمد المحلل اللغوي على أدوات Unix الأساسية مثل yacc وlex.
  3. إعادة الكتابة: يتم أخذ شجرة استعلام والتحقق من وجود القواعد الموجودة في أدلة النظام فيها. في كل مرة تتم إعادة كتابة استعلام المستخدم إلى استعلام يصل إلى جداول قاعدة البيانات.
  4. المحسن: يتم إنشاء خطة استعلام لكل طلب، ويتم تمريرها إلى المنفذ. الهدف من الخطة هو أنها تمر بجميع الخيارات الممكنة للحصول على النتيجة (سواء استخدام الفهارس أو الصلات أو ما إلى ذلك)، وتحدد الخيار الأسرع.
  5. تنفيذ الاستعلام: يجتاز المنفذ الشجرة بشكل متكرر ويحصل على النتيجة باستخدام الفرز والربط وما إلى ذلك، ويعيد الصفوف. Postgres هي قاعدة بيانات علائقية للكائنات، ويمثل كل جدول فيها فئة، ويتم تنفيذ الميراث بين الجداول. تم تنفيذ معايير SQL92 وSQL99.

تم بناء نموذج المعاملة على أساس ما يسمى بالتحكم في التزامن متعدد الإصدارات (MVCC)، والذي يوفر أقصى قدر من الأداء. يتم ضمان التكامل المرجعي من خلال وجود المفاتيح الأساسية والثانوية.

ماي إس كيو إليحتوي على طبقتين - طبقة SQL خارجية ومجموعة داخلية من المحركات، والتي يستخدمها محرك InnoDb في أغلب الأحيان، لأنه يدعم ACID بشكل كامل.

تم تنفيذ معيار SQL92.

من وجهة نظر معيارية، يمكن تقسيم كود MySQL إلى الوحدات التالية.

  1. تهيئة الخادم.
  2. مدير الاتصال.
  3. مدير الدفق.
  4. معالج الأوامر.
  5. المصادقة.
  6. محلل.
  7. محسن.
  8. مدير الجدول.
  9. المحركات (MyISAM، InnoDB، MEMORY، Berkeley DB).
  10. تسجيل.
  11. تكرار.
  12. واجهة برمجة تطبيقات الشبكة.
  13. واجهة برمجة تطبيقات النواة.

ترتيب تشغيل الوحدات كما يلي: أولاً، يتم تحميل الوحدة الأولى، التي تقرأ خيارات سطر الأوامر، وملفات التكوين، وتخصيص الذاكرة، وتهيئة الهياكل العامة، وتحميل جداول النظام، ونقل التحكم إلى مدير الاتصال.

عندما يتصل العميل بقاعدة البيانات، يتم نقل التحكم إلى مدير الموضوع، الذي يقوم بإنشاء مؤشر ترابط (وليس عملية!) للعميل، ويتم التحقق من مصادقته.

تتم معالجة طلبات العملاء، اعتمادًا على نوعها، على المستوى الأعلى بواسطة الوحدة الرابعة (المرسل). سيتم تسجيل الطلبات من خلال الوحدة الحادية عشرة. يتم تمرير الأمر إلى المحلل اللغوي ويتم فحص ذاكرة التخزين المؤقت. بعد ذلك، يمكن أن ينتقل الطلب إلى المحسن، ووحدة الجدول، ووحدة النسخ المتماثل، وما إلى ذلك. ونتيجة لذلك، يتم إرجاع البيانات إلى العميل من خلال مدير الدفق.

الكود الأكثر أهمية موجود في ملف sql/mysqld.cc. يحتوي على وظائف أساسية لم تتغير منذ الإصدار 3.22: init_common_variables() init_thread_environment() init_server_components() Grant_init() // sql/sql_acl.cc init_slave() // sql/slave.cc get_options() Handle_connections_sockets() create_new_thread () Handle_one_connection() check_connection() acl_check_host() // sql/sql_acl.cc create_random_string() // sql/password.cc check_user() // sql/sql_parse.cc mysql_parse() // sql/sql_parse.cc Submit_command() Query_cache ::store_query() // sql/sql_cache.cc JOIN::optimize() // sql/sql_select.cc open_table() // sql/sql_base.cc mysql_update() // sql/sql_update.cc mysql_check_table() // sql/sql_table.cc

يحدد رأس sql/sql_class.h الفئات الأساسية: فئات Query_arena، وStatement، وSecurity_context، وOpen_tables_state، وTHD. كائن فئة THD هو واصف مؤشر الترابط وهو وسيطة لعدد كبير من الوظائف.

3. مقارنة MySQL وPostgreSQL: أوجه التشابه والاختلاف

معيار الحمض

يعتمد معيار ACID على الذرية والنزاهة والعزلة والموثوقية. يستخدم هذا النموذج لضمان سلامة البيانات. ويتم تنفيذ ذلك على أساس المعاملات. PostgreSQL متوافق تمامًا مع ACID. لدعم ACID بشكل كامل في MySQL، تحتاج إلى تعيين محرك التخزين الافتراضي = innodb في ملف config.

أداء

غالبًا ما يتم تحسين قواعد البيانات بناءً على البيئة التي تعمل فيها. كلا القاعدتين لهما تقنيات مختلفة لتحسين الأداء. تاريخيًا، بدأ تطوير MySQL مع أخذ السرعة في الاعتبار، بينما تم تطوير PostgreSQL منذ البداية كقاعدة بيانات قابلة للتخصيص بدرجة كبيرة ومتوافقة مع المعايير. يحتوي PostgreSQL على عدد من الإعدادات التي تزيد من سرعة الوصول:

  • فهارس جزئية
  • ضغط البيانات؛
  • تخصيص الذاكرة؛
  • تحسين ذاكرة التخزين المؤقت.

يتمتع MySQL بدعم جزئي للفهارس الجزئية في InnoDB. إذا كنت تأخذ محرك MySQL ISAM، فقد اتضح أنه أسرع في الاستعلامات المسطحة، في حين لا يوجد حظر على الإدخالات، ولا يوجد دعم للمعاملات، والمفاتيح الخارجية.

ضغط

يقوم PostgreSQL بضغط البيانات وفك ضغطها بشكل أفضل، مما يسمح لك بحفظ المزيد من البيانات على مساحة القرص. وفي الوقت نفسه، تتم قراءة بيانات الضغط بشكل أسرع من القرص.

ضغط MySQL لمحركات مختلفة مدعوم جزئيًا، وجزئيًا غير مدعوم، وهذا يعتمد على الإصدار المحدد لمحرك معين.

فيما يتعلق بأداء المعالجات المتعددة، تتمتع PostgreSQL بميزة على MySQL. حتى مطوري MySQL أنفسهم يعترفون بأن محركهم ليس جيدًا في هذا الصدد.

أنواع البيانات

MySQL: يستخدم أنواع TINYBLOB، BLOB، MEDIUMBLOB، LONGBLOB لتخزين البيانات الثنائية، والتي تختلف في الحجم (حتى 4 جيجابايت).

الشخصية: أربعة أنواع - TINYTEXT، TEXT، MEDIUMTEXT، LONGTEXT.

PostgreSQL: يدعم محرك بيانات المستخدم باستخدام أمر CREATE TYPE والنوع المنطقي والأنواع الهندسية.

الحرف: نص (تحديد - الحد الأقصى لحجم الصف).

لتخزين البيانات الثنائية، يوجد نوع BLOB يتم تخزينه في نظام الملفات. يمكن تعريف أعمدة الجدول على أنها مصفوفة متعددة الأبعاد ومتغيرة الطول. الامتداد العلائقي للكائن: يمكن وراثة بنية الجدول من جدول آخر.

الإجراءات المخزنة

يدعم كل من PostgreSQL وMySQL الإجراءات المخزنة. يتبع PostgreSQL معيار Oracle PL/SQL، ويتبع MySQL معيار IBM DB2. يدعم MySQL توسيع SQL لوظائف الكتابة في C/C++ منذ الإصدار 5.1. PostgreSQL: PL/PGSQL، PL/TCL، PL/Perl، SQL، C لكتابة الإجراءات المخزنة.

مفاتيح

يدعم كل من PostgreSQL وMySQL المفتاح الأساسي والمفتاح الخارجي الفريدين. لا يدعم MySQL قيد التحقق، بالإضافة إلى أنه يتم تنفيذ المفاتيح الثانوية جزئيًا. PostgreSQL: التنفيذ الكامل بالإضافة إلى دعم ON ​​DELETE CASCADE وON UPDATE CASCADE.

محفزات

MySQL: دعم بدائي. PostgreSQL: المشغلات التعريفية: SELECT، INSERT، DELETE، UPDATE، INSTEAD OF؛ المحفزات الإجرائية: CONSTRAINT TRIGGER. الأحداث: قبل أو بعد الإدراج والحذف والتحديث.

زيادة تلقائية

MySQL: لا يمكن أن يكون هناك سوى عمود واحد في الجدول، ويجب فهرسته. PostgreSQL: نوع البيانات التسلسلية.

النسخ المتماثلة

مدعوم في كل من MySQL وPostgreSQL. يحتوي PostgreSQL على بنية معيارية، ويتم تضمين النسخ في وحدات منفصلة:

  • Slony-I هي آلية النسخ المتماثل الرئيسية في Postgres، حيث يتناقص الأداء كدالة تربيعية لعدد الخوادم؛

النسخ المتماثل في PostgreSQL يعتمد على المشغل وهو أبطأ من MySQL. ومن المخطط إضافة النسخ المتماثل إلى النواة بدءاً من الإصدار 8.4.

في MySQL، يتم تضمين النسخ المتماثل في النواة وله نوعان، بدءًا من الإصدار 5.1:

  • SBR - النسخ المتماثل القائم على البيان؛
  • RBR - النسخ المتماثل على أساس الصف.

يعتمد النوع الأول على تسجيل السجلات في سجل ثنائي، بينما يعتمد النوع الثاني على تسجيل التغييرات. بدءًا من الإصدار 5.5، يدعم MySQL ما يسمى بالنسخ المتماثل شبه المتزامن، حيث يقوم الخادم الرئيسي (الرئيسي) بإعادة تعيين البيانات إلى خادم آخر (تابع) مع كل التزام. يقوم محرك NDB بإجراء نسخ متزامن كامل على مرحلتين.

المعاملات

MySQL: InnoDB فقط. دعم SAVEPOINT، العودة إلى SAVEPOINT. مستويات القفل: مستوى الجدول (MyISAM). PostgreSQL: مدعوم بالإضافة إلى مستويات القراءة الملتزمة والعزلة. دعم التراجع، التراجع إلى نقطة الحفظ. مستويات القفل: مستوى الصف، مستوى الجدول.

مستويات الامتياز

PostgreSQL: يمكن تعيين الامتيازات لمستخدم أو لمجموعة مستخدمين.

بيانات التصدير والاستيراد

MySQL: مجموعة من أدوات التصدير المساعدة: mysqldump، mysqlhotcopy، mysqlsnapshot. الاستيراد من الملفات النصية، html، dbf. PostgreSQL: التصدير - الأداة المساعدة pg_dump. الاستيراد بين قواعد البيانات ونظام الملفات.

الاستعلامات المتداخلة

متوفر في كل من MySQL وPostgreSQL، لكنه قد لا يعمل بكفاءة في MySQL.

الفهرسة

تجزئة الفهرس: جزئية في MySQL، وكاملة في PostgreSQL. البحث عن النص الكامل: جزئي في MySQL، وكامل في PostgreSQL. الفهارس الجزئية: غير مدعومة في MySQL، ومدعومة في PostgreSQL. فهارس متعددة الأعمدة: في MySQL الحد الأقصى هو 16 عمودًا، في PostgreSQL – 32. فهارس التعبير: في MySQL – مضاهاة، في PostgreSQL – كاملة. فهرس إنشاء غير محظور: في MySQL - جزئي، في PostgreSQL - كامل.

التقسيم

يدعم MySQL التقسيم الأفقي: النطاق، القائمة، التجزئة، المفتاح، التقسيم المركب. يدعم PostgreSQL النطاق والقائمة. التقسيم التلقائي للجداول والفهارس.

التعافي التلقائي من الأعطال

MySQL: جزئي لـ InnoDB - تحتاج إلى عمل نسخة احتياطية يدويًا. PostgreSQL: كتابة التسجيل المسبق (WAL).

محركات تخزين البيانات

يدعم PostgreSQL محركًا واحدًا – نظام تخزين Postgres. يوجد العديد منها في MySQL 5.1:

  • MyISAM - يستخدم لتخزين جداول النظام.
  • InnoDB - الحد الأقصى من توافق ACID، وتخزين البيانات باستخدام المفاتيح الأساسية، وإدراج ذاكرة التخزين المؤقت، ودعم الضغط بدءًا من الإصدار 5.1 - راجع السمة ROW_FORMAT=COMPRESSED؛
  • NDB Cluster – محرك موجه نحو الذاكرة، وبنية عنقودية تستخدم النسخ المتماثل المتزامن؛
  • الأرشيف – يدعم الضغط، ولا يستخدم الفهارس؛
  • وأيضا: الدمج، الذاكرة (HEAP)، CSV.

تم تطوير InnoDB بواسطة InnoBase، وهي شركة تابعة لشركة Oracle. في الإصدار 6، يجب أن يظهر محركان - ماريا وفالكون. Falcon هو محرك يعتمد على معاملات ACID.

الترخيص

PostgreSQL: BSD (توزيع برامج بيركلي) مفتوح المصدر. MySQL: GPL (رخصة Gnu العامة) أو التجارية. MySQL هو منتج مفتوح المصدر. Postgres هو مشروع مفتوح المصدر.

خاتمة

لتلخيص ذلك، يمكننا أن نقول ما يلي: MySQL وPostgreSQL هما قاعدتا البيانات مفتوحتي المصدر الأكثر شهرة في العالم. كل قاعدة لها خصائصها والاختلافات الخاصة بها. إذا كنت بحاجة إلى تخزين سريع للاستعلامات البسيطة مع الحد الأدنى من الإعداد، فإنني أوصي بـ MySQL. إذا كنت بحاجة إلى تخزين موثوق لكميات كبيرة من البيانات، وقابل للتوسيع، والتكرار، ومتوافق تمامًا مع معايير لغة SQL الحديثة، فإنني أقترح استخدام PostgreSQL.

سنناقش مشكلات التكوين الخاصة بـ MySQL وPostgreSQL.

موارد للتحميل

static.content.url=http://www.site/developerworks/js/artrated/

المنطقة = مفتوحة المصدر، لينكس

معرف المقالة=779830

ArticleTitle=MySQL وPostgreSQL: الجزء الأول. التحليل المقارن

يلزم وجود مفتاح على الخادم لبدء تشغيل خادم 1C (دعنا نسميه تطبيق 1C).
هناك حاجة إلى خادم 1C حتى لا تكون قاعدة البيانات قائمة على الملفات، بل على ثلاثة مستويات.
المستوى الثلاثي، المعروف أيضًا باسم المستوى الثلاثي، هو نموذج تفاعل عميل 1C<->تطبيق 1C<->نظم إدارة قواعد البيانات (MS SQL، DB2، أوراكل، PostgreSQL)
أولئك. العميل، في الواقع، لا يتواصل مع خادم DBMS، فهو يتواصل مع خادم 1C، والذي بدوره يتواصل مع DBMS.
وبالتالي، يمكن أن يكون لديك 2،3،5-25-125 خادم DBMS، وخادم 1C واحد فقط. فقط لكل قاعدة بيانات خادم 1C، ستحتاج إلى الإشارة إلى الخادم الذي تم تثبيت قاعدة البيانات المحددة عليه، ونوع الخادم (نوع نظام إدارة قواعد البيانات).

مفتاح خادم 1C يكلف ~ 42 ألف روبل. للإصدار 32 بت، و~74 طنًا. ل 64 بت. في الوقت نفسه، يمكن استخدام مفتاح الإصدار 64 بت لخادم 32 بت (والعكس بالطبع غير ممكن).
كمفتاح للخادم، أرى أنه من المعقول استخدام مفتاح الجهاز.

بالمناسبة بخصوص الترخيص:

-مدرسة رخيصة-
نعم، هناك إصدار تسليم 1C مع ترخيص مضمن بالفعل لـ MS SQL. لكن:
أ.لتلقي مثل هذا التسليم، تحتاج إلى شراء مجموعة: خادم 1C + MS SQL + 5 تراخيص عميل على الأقل (صححني إذا كنت مخطئًا، فمن الممكن أن تحتاج إلى شراء 10 عملاء على الأقل)
والذي، في حالة مفاتيح 1C التي تم شراؤها بالفعل، يقلل بشكل كبير من ربحية هذا الاستحواذ.
ب.وفقًا لشروط الترخيص، يمكن استخدام هذا الأنين فقط لـ 1Ski.
أولئك. يبدو أنك قادر على نشر قاعدة بيانات أخرى عليها، ولكن هذا سيؤدي على الفور إلى تحويل MS SQL المرخص إلى قاعدة بيانات غير مرخصة.

- الترخيص الصحيح -
وفقًا للقواعد، يجب أن يتم ترخيص MS SQL كترخيص خادم + تراخيص لاتصالات العميل.
حيث لا يعتبر "العميل" تطبيق 1C باتصاله الوحيد (يمكن أن يكون هناك المزيد من الاتصالات - اعتمادًا على عدد العمليات التي تقوم بتكوينها على الخادم)، ولكن كل مستخدم 1C + ترخيص واحد لتطبيق 1C

أو الترخيص على أساس معالجات الخادم.
علاوة على ذلك، قد أكون مخطئا، ولكن في حالة 2005 - 2008 MS SQL، تحتاج إلى ترخيص المقبس (أي المعالج الفعلي، إذا كان عدد النوى لا يتجاوز 4)، ثم في حالة 2012، يذهب الترخيص إلى نوى المعالج بسعر = سعر الترخيص * عدد النوى/4.
علاوة على ذلك، تستخدم شركة ORACLE نظام الترخيص هذا لفترة طويلة (يوجد جدول معاملات يعتمد على العدد الإجمالي لنوى الخادم)،
لأن تسمح أدوات المحاكاة الافتراضية الحديثة بتقديم ما لا يقل عن 4 معالجات فعلية 4-6-8 أساسية على الأقل إلى جهاز افتراضي كجهاز فعلي واحد يحتوي على +100500 مركز (والتي استخدمها البعض بنجاح)

– ترخيص واسع النطاق –
في كثير من الأحيان، يتم شراء ترخيص الخادم فقط (حوالي 28000 روبل) ويتم إنفاقه بالكامل على ترخيص اتصالات العميل.
في بعض الحالات، على سبيل المثال في حالة اتفاق الشركةفهذا أمر مقبول (نظرًا لأن ترخيص نظام تشغيل العميل ضمن الترخيص يوفر تلقائيًا ترخيصًا للاتصال بالخادم).
ولكن في معظم الحالات ينتهك الترخيص. على الرغم من أنه يئن ولا يقسم.

لنكن صادقين، على الرغم من أن 1C Enterprise متوافق مع العديد من أنظمة إدارة قواعد البيانات (DBMS)، إلا أن 99 بالمائة منها تعمل إما في MS SQL أو في PostgreSQL المجانية.

بمعنى آخر، غزت هذين "المكاتب الفرعية" سوق 1C لخادم العميل.

ويمكننا أن نفترض بأمان أنه إذا كانت الشركة لا تعمل في MS SQL، فمن المرجح أنها تستخدم ببساطة PostgreSQL.

وبناء على ذلك، فمن المنطقي فقط مقارنة Postgres مع MS SQL.

اليوم، يتم كتابة الكثير عن كل من MS SQL وPostgreSQL، ولكن عادة لا تتم مقارنتهما بشكل موضوعي.

في هذه المقالة، سنقوم بتحليل الجوانب التقنية الرئيسية لـ PostgreSQL المجانية، ومقارنتها مع MS SQL.

ما الذي سيسمح لك باتخاذ الخيار الأفضل في المستقبل والاستعداد لمختلف "المفاجآت" أو ما سيكون أكثر ملاءمة لـ "ميزات" العمل في نظام إدارة قواعد البيانات المجاني هذا.

سنقوم بتقييم كل شيء كما هو، دون إضافة تلك المزايا التي لا تمتلكها إلى Postgres ودون تجميل MS المدفوع.

سأجيب على الفور على السؤال الذي يقلق العديد من المبتدئين!

نعم! يعمل MS SQL بشكل أسرع من PostgreSQL، هذه حقيقة! وهناك عدد من الأسباب لذلك!

ربما شعرت بخيبة أمل على الفور لشخص ما، وربما لا توافق على هذا البيان، أعتذر، لكن فيزياء نظام إدارة قواعد البيانات المجاني هذا لا تسمح له بالتقدم على MS SQL، خاصة إذا كنا نتحدث عن مجموعة مثل هذه "الوحش 1C" وPostgreSQL.

سترى حججًا مماثلة أكثر من مرة في العديد من المؤتمرات والندوات المخصصة لنظام إدارة قواعد البيانات هذا. لا أحد يخفي أو ينكر أي شيء، الحقيقة هي الحقيقة.

ومع ذلك، فإن أداء PostgreSQL كافٍ تمامًا للمستخدمين يمكن أن تعمل بشكل مريح في 1C.

سواء كان ذلك عشرات المستخدمين أو حتى عدة مئات يعملون في وقت واحد في 1C Enterprise.

لماذا "الوحش 1C"؟

في الواقع، هذه هي الطريقة التي ترى بها 1C PostgreSQL دون تثبيت "تصحيحات" وإضافات خاصة.

نعم، كما يقولون، خارج الصندوق، عن طريق تنزيل توزيع PostgreSQL في المكتب. موقع الويب، فلن تتمكن من استخدامه للعمل مع 1C. سوف يتباطأ 1C بشكل رهيب ويتوقف ببساطة ويرفض العمل.

لماذا يحدث هذا، ولماذا "البقع"؟

الحقيقة هي أن 1C Enterprise تنشئ عددًا كبيرًا من الجداول المؤقتة في عملية عملها، والتي يمكننا التحدث عنها حوالي آلاف الجداول في الثانية،وإذا أخذت، على سبيل المثال، سجل "شريحة من الأحدث" - "المتبقيات والتحولات"، فقد يكون هناك ومليون سطر لكل منهمايكون.

الحقيقة هي أنه افتراضيًا (بدون "التصحيحات")، لا يقوم PostgreSQL بحساب الإحصائيات على هذه الجداول المؤقتة الكبيرة، وبعبارة أخرى، مُحسِّن الاستعلام، الذي يسترشد بالبيانات من الإحصائيات (وكما نتذكر، فهو فارغ، هناك لا شيء يحسب)، بشكل تقريبي، يقوم بالاختيار باستخدام هذه الطريقة يختار *والتي بالطبع ستعمل ببطء شديد!

ومن هنا الفرامل الضخمة في 1C!

بالطبع، هذه ليست كل المشكلات التي تحتاج إلى حل لكي يعمل PostgreSQL بشكل صحيح مع 1C. ستكون هناك حاجة إلى "تصحيحات" وملحقات خاصة أخرى، وبعد 15-20 مستخدمًا، ستكون هناك حاجة إلى تصحيحات إضافية. الإعدادات في "التكوين"

نعم، في الواقع، يبدو كل شيء أكثر تعقيدًا مما وصفته أعلاه، ولكن هكذا ستبدو المشكلة الرئيسية المتمثلة في العمل البطيء لـ 1C مع PostgreSQL، إذا تم تبسيطها إلى حد كبير.

الشيء الثاني الذي لا يعجبني حقًا في PostgreSQL هو عدم وجود تعدد مؤشرات الترابط ضمن طلب واحدبالمقارنة مع MS SQL.

(بدءًا من الإصدار 9.6، قمنا بالمحاولة الأولى لموازاة الاستعلامات، لكنها حتى الآن تعمل بشكل سيء، وأحيانًا يكون التأثير عكسيًا). ولكن لمحاولة 5!)

ما يؤثر بالطبع على الأداء حتى تفهم بعبارات بسيطة -

PostgreSQL قادر على تعطل خادمك الذي يحتوي على 48 نواة من خلال استعلام واحد كبير!

الأمر بسيط، لا يوجد توازي بين سلاسل الرسائل ضمن طلب واحد وطلب واحد كبير "يحمل" نواة واحدة فقط.

نعم، إذا كان هناك الكثير من الطلبات، فسيتم تحميل جميع النوى وسيعمل كل شيء بشكل جيد.

وكدت أنسى نحن نقارن PostgreSQL مع MS SQL Standard وليس Express!

على الرغم من أنه يمكن استخدام Express لأغراض تجارية، إلا أن هناك عددًا من القيود

مثل 10 جيجابايت لكل قاعدة، واستخدام معالج واحد، و1 جيجابايت من ذاكرة الوصول العشوائي،

يجعل استخدام مثل هذا المنتج شبه مستحيل للعمل في 1C Enterprise.

ما لم يكن لديك قاعدة بيانات صغيرة جدًا وعدد قليل من المستخدمين (وحتى ذلك الحين يوجد عدد قليل جدًا من مكابح 1 جيجابايت لنظام إدارة قواعد البيانات).

لذلك دعونا نقارن PostgreSQL بالإصدار القياسي الشائع.

نصوص!!!

PostgreSQL هي في المقام الأول نصوص برمجية مقارنة بـ MS SQL، ومعظم العمليات يجب أن تتم يدويًا، وبالطبع يمكنك التثبيت والقيام ببعض الأشياء الأساسية من خلال الواجهة، لكنني أؤكد على أن الأشياء الأساسية، والخطوة إلى اليسار هي انتقل إلى اليمين وتحتاج إلى كتابة برنامج نصي، أو BAS على Linux أو cmd، powershell على Windows.

عرض وتحليل الآثار باستخدام SQL Server Profiler.

ملف تعريف SQL Server المعروف غائب في PostgreSQL، وأعني بكلمة "غائب" تمامًا، للأسف، لا يوجد شيء مثله في PostgreSQL.

هناك، بالطبع، أدوات مساعدة تسمح لك، إذا كان لديك الوقت لاعتراض طلب أو تعيين نقطة توقف 1C في مصحح الأخطاء، والحصول على شيء ما وإلقاء نظرة عليه، ولكن بالمقارنة مع ملف التعريف، كما يقولون، لم يكن الأمر كذلك لا تغلق حتى.

يمكنك إعداد سجل ومن ثم فرزه بالكامل - لكن الأمر سيستغرق وقتًا طويلاً!

هنا مثال:

يحاول مبرمج 1C تصحيح بعض الاستعلامات الكبيرة، ويستغرق تنفيذه وقتًا طويلاً، على سبيل المثال 30 دقيقة، ولكن في PostgreSQL، لكي يتم تضمين البيانات في السجل، يجب تنفيذ هذا الاستعلام! هل يمكنك أن تتخيل كم من الوقت سيستغرق تصحيح مثل هذا الطلب؟

بينما في MS SQL، يمكنك مقاطعة تنفيذ الاستعلام وتحليله في ملف التعريف، لأنه سيكون موجودًا بالفعل، ولكن بالحالة "فشل".

Postgres ليس له مثيل في مجموعة متنوعة من خيارات إنشاء النسخ الاحتياطية!

هنا لديك نسخ احتياطي تزايدي ونسخ احتياطي كامل وأرشفة WAL مستمرة.

في واقع الأمر، هناك نسخ احتياطي جزئي واسترداد جزئي للبيانات.

يمكنك تكوين الأرشفة المستمرة والاسترداد في الوقت المناسب (الاسترداد في الوقت المناسب (PITR)).

أيضًا تكرار، متاح أصلاً في PostgreSQl بدون أي "تصحيحات" من الأدوات المساعدة أو الإضافات!

  • النسخ المتماثل المتتالية
  • النسخ المتماثل الجريان
  • النسخ المتزامن
  • الأرشفة المستمرة على خادم النسخ الاحتياطي

كل هذا متاح بالفعل في البداية في PostgreSQl وبالطبع ليس في "express" وغير متوفر في إصدار MS SQL Standard.

للحصول على كل ما سبق في MS SQL، تحتاج إلى شراء MS SQL Enterprise باهظ الثمن للغاية، ويبلغ سعره الآن حوالي 15000 دولار.

ما هو المفقود بالمقارنة مع MS SQL؟

لا يوجد "نسخ احتياطي" تفاضلي

نعم، في PostgreSQl لا يوجد "نسخ احتياطي" تفاضلي، ولكن هناك نظائر مختلفة للإنشاء المتزايد لـ "النسخ الاحتياطية".

على سبيل المثال، "النسخ الاحتياطي" المتزايد على مستوى الكتلة.

يوجد فصل بين مساحات الطاولة، والتي تدعم بالفعل 1C افتراضيًا!

والتي، بالمناسبة، ليست في MS SQL!

على سبيل المثال، يمكنك تكوين القرص الذي سيكون لديك "فهارس" وعلى القرص الذي سيتم وضع "الجدول" فيه؛ وهذا مناسب جدًا عند تخطيط البنية التحتية لتكنولوجيا المعلومات الخاصة بك عندما يتعلق الأمر بقواعد بيانات 1C الكبيرة. ONLINE_ANALYZE لإعادة حساب الإحصائيات. وينطبق الشيء نفسه على ملف *dt.

باستخدام PostgreSQl نادرًا ما تحتاج إلى REINDEX!

في الواقع، يجب استخدامه فقط عندما يكون هناك شك في تلف سلامة قاعدة البيانات.

يمكنك عمل "نسخ احتياطية" عن طريق استبعاد الجداول!

على سبيل المثال، إذا كان لديك العديد من مبرمجي 1C الذين يعملون في شركتك، فمن المؤكد أنهم سيعملون نسخًا احتياطية لأنفسهم وإنشاء "نسخ احتياطية" لمزيد من التطوير.

ونتيجة لذلك، يعاني المستخدمون؛ حيث تتباطأ قاعدة البيانات أثناء إنشاء "نسخة احتياطية" كبيرة، خاصة إذا كانت قاعدة البيانات هذه تحتوي على أشياء مثل الملفات المرفقة المتنوعة والمحفوظات والمستندات من الرسائل. يمكن أن تحتوي هذه الجداول التي تحتوي على ملفات بسهولة على مئات الجيجابايت. ويمكن استبعادها في PostgreSQl عن طريق إنشاء "نسخة احتياطية"، وبالتالي تكون صغيرة الحجم، وبها جميع الوظائف في نفس الوقت.

بهذه الطريقة لا نزيد التحميل على أجهزة الشبكة، ولا نسد القناة، ونقضي وقتًا أقل بكثير في إنشاء مثل هذا "النسخ الاحتياطي"

في النهاية، الجميع يفوز! ينام كل من المستخدمين والمبرمجين والمسؤولين بسلام.

في هذه المقالة، استعرضنا فقط الاختلافات الأساسية بين PostgreSQl وMS SQL (هناك آخرون)، ولكن عند اتخاذ قرار بشأن اختيار لصالح نظام إدارة قواعد البيانات (DBMS) أو ذاك، يجب أن تساعد المقالة!

حظا سعيدا زميل!

ملاحظة. أنا الآن أعمل على دورة جديدة "1C وPostgreSQL" (بالفعل في مرحلة التسجيل، انتظر قريبًا!)

مع أطيب التحيات، بوجدان.

تم استخدام قواعد البيانات العلائقية لفترة طويلة. لقد أصبحت شائعة بسبب أنظمة الإدارة التي تنفذ النموذج العلائقي بشكل جيد لدرجة أنه أفضل طريقة للعمل مع البيانات، خاصة بالنسبة للتطبيقات والخدمات ذات المهام الحرجة.

لقد كانت MySQL موجودة منذ فترة طويلة وأثبتت أنها حل ممتاز، وقد ظهرت Postgresql في السوق في نفس الوقت تقريبًا، ولكنها توفر الكثير من الوظائف والقدرات المثيرة للاهتمام، والتي بفضلها تكتسب شعبية بسرعة. سنحاول في هذه المقالة مقارنة MySQL وPostgresql، ومقارنة الاختلافات الرئيسية بين هذه الأنظمة، ومعرفة كيفية عملها ومحاولة فهم النظام الذي سيكون أفضل لمشروعك.

تم تصميم قواعد البيانات للتخزين المنظم والوصول السريع إلى البيانات المختلفة. يجب أن يكون لكل قاعدة بيانات، بالإضافة إلى البيانات نفسها، نموذج تشغيل محدد سيتم بموجبه إجراء معالجة البيانات. لإدارة قواعد البيانات، يتم استخدام DBMS أو أنظمة إدارة قواعد البيانات، وتشمل هذه البرامج MySQL وPostgresql.

تسمح أنظمة إدارة قواعد البيانات العلائقية بوضع البيانات في الجداول عن طريق ربط صفوف من جداول مختلفة وبالتالي ربط بيانات مختلفة ومجمعة منطقيًا. قبل أن تتمكن من حفظ البيانات، يجب عليك إنشاء جداول ذات حجم معين وتحديد نوع بيانات لكل عمود. تمثل الأعمدة حقول البيانات، ويتم وضع البيانات نفسها في صفوف. كلا نظامي إدارة قواعد البيانات، MySQL وPostgresql، علائقيان. بعد ذلك، سننظر بمزيد من التفصيل في كيفية اختلاف كلا البرنامجين. الآن دعنا ننتقل إلى دراسة أكثر تفصيلاً.

قصة قصيرة

ماي إس كيو إل

بدأ تطوير MySQL في التسعينات. تم الإصدار الداخلي الأول لقاعدة البيانات في عام 1995. خلال هذا الوقت، كانت العديد من الشركات تعمل على تطوير البرنامج. بدأ التطوير من قبل الشركة السويدية MySQL AB، والتي استحوذت عليها شركة Sun Microsystems، والتي أصبحت في حد ذاتها ملكًا لشركة Oracle. في الوقت الحالي، منذ عام 2010، تقوم شركة Oracle بتطويره.

Postgresql

بدأ تطوير Postrgresql في عام 1986 في جامعة كاليفورنيا، بيركلي. استمر التطوير ما يقرب من ثماني سنوات، ثم تم تقسيم المشروع إلى قسمين: قاعدة البيانات التجارية IIlustra ومشروع Postrgesql المجاني بالكامل، والذي تم تطويره من قبل المتحمسين.

مخزن البيانات

ماي إس كيو إل

MySQL هي قاعدة بيانات علائقية؛ تُستخدم محركات مختلفة لتخزين البيانات في الجداول، لكن العمل مع المحركات يكون مخفيًا في النظام نفسه. لا يؤثر المحرك على بناء جملة الطلبات وتنفيذها. المحركات الرئيسية المدعومة هي MyISAM، InnoDB، MEMORY، Berkeley DB. وهي تختلف في طريقة كتابة البيانات على القرص، وكذلك في طرق قراءتها.

Postgresql

Postgresql هي قاعدة بيانات مرتبطة بالكائنات تعمل على محرك واحد فقط - محرك التخزين. يتم تمثيل جميع الجداول ككائنات، ويمكن توريثها، ويتم تنفيذ جميع الإجراءات مع الجداول باستخدام وظائف موجهة نحو الهدف. كما هو الحال في MySQL، يتم تخزين جميع البيانات على القرص، في ملفات تم فرزها خصيصًا، لكن بنية هذه الملفات والسجلات الموجودة فيها مختلفة تمامًا.

معيار SQL

بغض النظر عن نظام إدارة قاعدة البيانات المستخدم، فإن SQL هي لغة استعلام موحدة. وهو مدعوم بجميع الحلول، حتى MySQL أو Postgresql. تم تطوير معيار SQL في عام 1986 وخلال هذا الوقت تم بالفعل إصدار العديد من الإصدارات.

ماي إس كيو إل

لا يدعم MySQL جميع الميزات الجديدة لمعيار SQL. اختار المطورون مسار التطوير هذا لإبقاء MySQL سهل الاستخدام. تحاول الشركة تلبية المعايير، ولكن ليس على حساب البساطة. إذا كانت بعض الميزات قادرة على تحسين سهولة الاستخدام، فيمكن للمطورين تنفيذها كامتداد خاص بهم دون الاهتمام بالمعيار.

Postgresql

Postgresql هو مشروع مفتوح المصدر، تم تطويره من قبل فريق من المتحمسين ويحاول المطورون الالتزام بمعيار SQL قدر الإمكان وتنفيذ أحدث المعايير. ولكن كل هذا يأتي على حساب البساطة. Postgresql معقد للغاية ولهذا السبب فهو لا يحظى بشعبية مثل MySQL.

قدرات المعالجة

تظهر اختلافات أخرى بين postgresql وmysql من الفقرة السابقة: قدرات وقيود معالجة البيانات. وبطبيعة الحال، فإن الامتثال للمعايير الأحدث يجلب قدرات أحدث.

ماي إس كيو إل

عند تنفيذ طلب، يقوم MySQL بتحميل استجابة الخادم بالكامل إلى ذاكرة العميل؛ بالنسبة لكميات كبيرة من البيانات، قد لا يكون هذا مناسبًا للغاية. في الأساس، Postgresql يتفوق على Mysql من حيث الوظائف، وسننظر في أي منها بعد ذلك.

Postgresql

يدعم Postgresql استخدام المؤشرات للتنقل عبر البيانات المستلمة. تحصل فقط على مؤشر، ويتم تخزين الاستجابة بأكملها في ذاكرة خادم قاعدة البيانات. يمكن حفظ هذا المؤشر بين الجلسات. وهو يدعم بناء فهارس لعدة أعمدة جدول في وقت واحد. بالإضافة إلى ذلك، يمكن أن تكون الفهارس من أنواع مختلفة، بالإضافة إلى التجزئة وشجرة B، للعمل مع المدن، GiST و SP-GiST، GIN للبحث عن النص، BRIN و Bloom.

يدعم Postgresql التعبيرات العادية في الاستعلامات والاستعلامات العودية ووراثة الجدول. ولكن هناك عدة قيود، على سبيل المثال، يمكنك فقط إضافة حقل جديد في نهاية الجدول.

أداء

يجب تحسين قواعد البيانات لتناسب البيئة التي ستعمل فيها. تاريخيًا، ركزت MySQL على الحد الأقصى من الأداء، وتم تطوير Postgresql كقاعدة بيانات تحتوي على عدد كبير من الإعدادات ومتوافقة قدر الإمكان مع المعيار. ولكن مع مرور الوقت، تلقى Postgresql العديد من التحسينات والتحسينات.

ماي إس كيو إل

في معظم الحالات، يتم استخدام جدول InnoDB لتنظيم العمل مع قاعدة بيانات في MySQL؛ وهذا الجدول عبارة عن شجرة B مع فهارس. تسمح لك الفهارس باسترداد البيانات من القرص بسرعة كبيرة وتتطلب عمليات أقل على القرص. لكن مسح الشجرة يتطلب العثور على فهرسين، وهذا أمر بطيء بالفعل. كل هذا يعني أن MySQL ستكون أسرع من Postgresql فقط عند استخدام مفتاح أساسي.

Postgresql

جميع معلومات رأس جداول Postgresql موجودة في ذاكرة الوصول العشوائي (RAM). لا يمكنك إنشاء جدول نفاد الذاكرة. يتم فرز إدخالات الجدول حسب الفهرس، بحيث يمكنك استرجاعها بسرعة كبيرة. لمزيد من الراحة، يمكنك تطبيق فهارس متعددة على جدول واحد.

بشكل عام، PostgreSQL أسرع، باستثناء استخدام المفاتيح الأساسية. دعونا نلقي نظرة على بعض الاختبارات مع عمليات مختلفة:


أنواع البيانات

إحدى أبرز مميزات قاعدتي البيانات هي أنواع البيانات المدعومة التي يمكنك استخدامها. نظرًا لأن كلا الحلين يحاولان مطابقة بناء جملة SQL، فإن لديهما مجموعات متشابهة، لكنهما لا يزالان مختلفين في بعض النواحي.

ماي إس كيو إل

يدعم MySQL أنواع البيانات التالية:

  • تاينينت: عدد صحيح صغير جدًا.;
  • سمالينت:كل صغير؛
  • متوسطة:متوسطة الحجم كاملة؛
  • إنت:كله بالحجم الطبيعي.
  • كبير:كل كبير؛
  • يطفو:رقم الفاصلة العائمة ذو الدقة الواحدة الموقع؛
  • دقة مزدوجة، دقة مزدوجة، حقيقية:موقعة رقم النقطة العائمة دقة مزدوجة
  • عشري، رقمي:رقم النقطة العائمة الموقعة؛
  • تاريخ:تاريخ؛
    التاريخ والوقت:مزيج من التاريخ والوقت؛
  • الطابع الزمني:الطابع الزمني؛
  • وقت:وقت؛
    سنة:السنة بتنسيق YY أو YYYY؛
  • شار: سلسلة ذات حجم ثابت، مبطنة على اليمين بمسافات إلى الحد الأقصى للطول؛
  • فارتشار:سلسلة ذات طول متغير؛
  • تايني بلوب، تينيتيكست:بيانات ثنائية أو نصية بطول أقصى يبلغ 255 حرفًا؛
  • النقطة الكبيرة، النص: بيانات ثنائية أو نصية بطول أقصى يبلغ 65535 حرفًا؛
  • متوسط ​​الحجم، نص متوسط:البيانات النصية أو الثنائية؛
  • LONGBLOB، نص طويل:الحد الأقصى للنص أو البيانات الثنائية هو 4294967295 حرفًا؛
  • التعداد:تعداد؛
  • تعيين:الجموع.

Postgresql

تختلف أنواع الحقول المدعومة في Postgresql تمامًا، ولكنها تسمح لك بتسجيل نفس البيانات تمامًا:

  • كبير:موقعة عدد صحيح 8 بايت؛
  • com.bigserial: عدد صحيح بمقدار 8 بايت يتم زيادته تلقائيًا؛
  • قليل:سلسلة ثنائية ذات طول ثابت؛
  • متفاوتة قليلا:سلسلة ثنائية متغيرة الطول؛
  • منطقية:علَم؛
  • صندوق:مستطيل على متن الطائرة.
  • بايت: البيانات الثنائية؛
  • اختلاف الطابع:سلسلة أحرف ذات طول ثابت؛
  • شخصية:
  • عصير التفاح:عنوان شبكة IPv4 أو IPv6؛
  • دائرة:دائرة على متن الطائرة
  • تاريخ: تاريخ التقويم؛
  • دقة مزدوجة:رقم النقطة العائمة مزدوج الدقة؛
  • إنت:عنوان الإنترنت IPv4 أو IPv6؛
  • عدد صحيح: عدد صحيح مكون من 4 بايت؛
  • فاصلة:فترة؛
  • خط:خط مستقيم لا نهائي على المستوى؛
  • لسيغ:قطعة على متن طائرة؛
  • ماكدر:عنوان ماك؛
  • مال:القيمة النقدية؛
  • طريق:المسار الهندسي على متن الطائرة.
  • نقطة:نقطة هندسية على المستوى
  • المضلع:مضلع على متن الطائرة.
  • حقيقي:رقم النقطة العائمة بدقة واحدة؛
  • صغير:عدد صحيح ثنائي البايت؛
  • مسلسل:زيادة عدد صحيح مكون من أربعة بتات تلقائيًا؛
  • نص:سلسلة أحرف متغيرة الطول؛
  • وقت:مرات اليوم؛
  • الطابع الزمني:التاريخ و الوقت؛
  • com.tsquery: استعلام البحث عن النص؛
  • ناقل:مستند بحث نصي؛
  • uuid: معرف فريد؛
  • أكس أم أل:بيانات XML.

كما ترون، هناك المزيد من أنواع البيانات في Postgresql وهي أكثر تنوعًا؛ وهناك أنواع حقول لأنواع معينة من البيانات لا تحتوي عليها MySQL. الفرق بين MySQL وPostgresql واضح.

تطوير

كلا المشروعين مفتوح المصدر ولكن تم تطويرهما بشكل مختلف. لا يحب الجميع تطوير MySQL. وهذا هو المكان الذي تعطي فيه المقارنة بين mysql وpostgresql العديد من الاختلافات.

ماي إس كيو إل

يتم تطوير قاعدة بيانات MySQL بواسطة شركة Oracle وهناك شائعات بأن الشركة تنوي إبطاء تطوير المحرك. تم إنشاء الكثير من تشعبات المشروع، بما في ذلك تفرع MariaDB من مطور MySQL الأصلي. ولكن لا يزال التطوير بطيئا.

Postgresql

وكما ذكرنا في بداية المقال، بدأ التطوير في جامعة بيركلي. ثم انتقلت إلى شركة تجارية. ويجري حاليا تطوير البرنامج من قبل مجموعة مستقلة من المبرمجين ومجلس إدارة العديد من الشركات. يتم إصدار الإصدارات الجديدة بنشاط كبير وتتلقى المزيد والمزيد من الميزات الجديدة.

الاستنتاجات

في هذه المقالة، قمنا بمقارنة mysql وpostgresql، ونظرنا في الاختلافات الرئيسية بين نظامي إدارة قواعد البيانات وحاولنا فهم أيهما أفضل، postgresql أو mysql. بشكل عام، Postgresql هو الأفضل من حيث الإمكانيات، لكنه معقد ولا يمكن استخدامه في كل مكان. يعتبر MySQL أبسط، لكنه لا يدعم بعض الميزات المثيرة للاهتمام. ما هي قاعدة البيانات التي ستختارها لمشروعك؟ لماذا لها؟ اكتب في التعليقات!

في ختام الفيديو الذي يصف إمكانيات Postgresql وآفاقها: