كيف تعمل ميزة المخطط الزمني لـ Etherpad؟

أرغب في فهم كيفية عمل ميزة المخطط الزمني لـ Etherpad.

If you don't know the etherpad software here is an implementation of it - http://piratepad.net/

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

يمكنني رؤية استجابة JSON مثل هذا - http://img6.imagebanana.com/img/ vmot5xt0/Selection_060.png ولكن يمكن لأي شخص أن يكسر ذلك إلى شيء مفهوم.

Here is the piece of code from the Node.js port of it - https://github.com/Pita/etherpad-lite/blob/master/src/node/handler/TimesliderMessageHandler.js#L359

أنا مهتم جدًا بفهم استجابة JSON وكيفية عملها. أيضا ما هي قاعدة البيانات الأكثر ملاءمة لمثل هذه التطبيقات (إيثرباد ، مستندات جوجل ، وما إلى ذلك). Nosql (مثل mongodb) أو SQL (مثل mysql).

1

1 إجابة

عندما تقوم بالسحب على timeslider ، يتم إرسال التغييرات ذات الصلة من الخادم إلى العميل كما اكتشفت.

Changes are encoded as instructions that edit the existing document contents to become the new document contents. See https://github.com/ether/etherpad-lite/wiki/Changeset-Library

The original description is: https://github.com/ether/pad/blob/master/infrastructure/ace/easysync-notes.txt

Etherpad runs on SQL primarily. Maybe there is experiments with other DB:s, but most important for etherpad is reading/writing raw tables of changesets. A relational DB is probably the best choice for performance and sanity. MySQL is the default for etherpad. Postgres has been worked on. List of DB tables at http://appolo85.wordpress.com/2010/03/22/first-steps-understanding-etherpad/

(لذلك ، فإن نوع قواعد البيانات nosql ليست فكرة جيدة. إذا كانت MySQL مملة للغاية بالنسبة لك ، فحاول استخدام قاعدة بيانات في الذاكرة للحصول على سرعة جيدة ، لاحظ أيضًا أن etherpad العادي يعمل على java + scala على خادم سمين ، والتي قد تكون العقبة الرئيسية الخاصة بك إذا كنت ترغب في إعداد خادم خاص بك.)

2
وأضاف
شكرا لك على المساعدة ، يبدو وكأنه بداية جيدة. شيء واحد على الرغم من أي أفكار حول mongodb؟ في الواقع أنا أقوم بعمل تطبيق مماثل سيسجل أشياء أخرى بصرف النظر عن التغييرات النصية. اعتقدت ربما مجرد تخزين كائن json المرسلة من العميل أثناء إنشاء لوحة داخل mongodb (على أساس واجهة المستخدم json ، لذلك كنت قد أرسلت للتو/استرجاع jsons) سيكون فكرة جيدة. أيضا بعد الملايين من الصفوف ، إذا أردت فقط تسجيل شيء آخر قد يحتاج إلى إضافة عمود آخر ، مع mongo ليس هناك مخطط. مع MySQL ، أود أن تغيير الجدول (قليلا من الألم إذا كنت تحصل لي).
وأضاف المؤلف user1437328, مصدر
لا تستخدم MongoDB for changesets. (أو افعل ، ولكن بعد ذلك أعدك بالكتابة عندما تفشل حتى تساعد الآخرين على تجنب الخطأ :-). استخدم MongoDB للوثائق/الكائنات المعقدة لتجنب إنشاء المئات من الجداول العلائقية. إذا كنت ترغب في أن تكون MongoDB متوافقة مع buzzword ، فإنني أوصي بدلاً من ذلك بقاعدة بيانات في الذاكرة. HSQLDB و VoltDB أكثر برودة من Mongo. وأسرع بكثير. السرعة التي تم الحصول عليها عن طريق "الغش" ، معلومات كاملة على en.wikipedia.org/wiki/In-memory_database </أ>
وأضاف المؤلف Simon B., مصدر