سؤال

هل توجد أي موصلات غير متزامنة لـ Mysql يمكن استخدامها داخل تطبيق C أو C++؟أنا أبحث عن شيء يمكن توصيله بـ نمط المفاعل كتبت في Boost.Asio.

[تحرير:] تشغيل موصل متزامن في المواضيع ليس خيارًا.

هل كانت مفيدة؟

المحلول

http://forums.mysql.com/read.php?45,183339,183339يتمتع

رابط محدث للمقالة الأصلية يوضح كيفية إجراء استعلامات mysql غير المتزامنة:

http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/

نصائح أخرى

واجهت مشكلة مماثلة مع تقنيات مختلفة تمامًا:الملتوية بيثون (IO القائم على المفاعل) وsqlAlchemy (؟؟).أثناء البحث عن حل، وجدت مشروع sAsync الذي قام ببساطة بإنشاء سلسلة رسائل منفصلة لـ sqlAlchemy ثم استجاب للطلبات.

نظرًا لأن ASIO يعتمد على ميزات نظام التشغيل منخفضة المستوى (مثل aio_read() أو ReadFileEx() وما إلى ذلك) ومفاعل على مستوى نظام التشغيل (أو proactor، في حالة Windows) لا أعتقد أن لديك فرصة أخرى سوى محاكاة " "عدم التزامن" بوسائل مماثلة.

لا يعد تشغيل موصل متزامن في سلاسل المحادثات خيارًا

فكر في الأمر:ال libmysqlclient / mysqlclient.dll الذي تستخدمه لإجراء مكالمات المقبس المتزامنة.سيقوم برنامج جدولة نظام التشغيل بالتبديل بشكل صحيح إلى مؤشر ترابط آخر حتى يتم الانتهاء من الإدخال/الإخراج، فما الفرق؟(بصرف النظر عن حقيقة أنه لا ينبغي عليك إنشاء 2 ألف موضوع لهذا ..)

يحرر:يدعم mysql_real_connect() معلمة مقبس UNIX.من المفترض أنه يمكنك القراءة بنفسك من منفذ خادم mysql والكتابة إلى مقبس UNIX هذا فقط باستخدام ASIO.مثل الوكيل.

[ إن تشغيل موصل متزامن في المواضيع ليس خيارًا التفكير في الأمر:يقوم libmysqlclient / mysqlclient.dll الذي تستخدمه بإجراء مكالمات متزامنة للمأخذ.سيقوم برنامج جدولة نظام التشغيل بالتبديل بشكل صحيح إلى مؤشر ترابط آخر حتى يتم الانتهاء من الإدخال/الإخراج]

هذا يزعجني!- يمكن أن يكون "مؤشر الترابط الآخر" بمثابة مزامنة ثانية بسهولة.هل يجب أن يتم الاتصال بـ mysql، ويجب التعامل معه بواسطة mysql تمامًا كما يفعل عميل آخر تمامًا؟شعوري هو أنه يجب أن يعمل باستخدام خيوط متعددة.

MySQL Connector/C++ هو تطبيق C++ لـ JDBC 4.0

العملاء المرجعيون الذين يستخدمون MySQL Connector/C++ هم:- أوبن أوفيس - MySQL Workbench

يتعلم أكثر: http://forums.mysql.com/read.php?167,221298

يوجد مشروع اسمه DBSlayer يضع طبقة أخرى أمام MySQL تتحدث إليها من خلال JSON. http://code.nytimes.com/projects/dbslayer

هل فكرت في استخدام libdrizzle؟لقد استخدمت إصدارًا قديمًا فقط، منذ أن كان مشروعًا منفصلاً عن Drizzle، واختبرت ميزات الاستعلام غير المتزامن، لكنني لم أقم أبدًا بأي معايير فعلية تستحق الذكر.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top