zplCloud Blog
MongoDB كمصدر بيانات: بلا تصدير وبلا نسخة في السحابة
تتحول عوامل التصفية إلى مستندات استعلام أصلية ينفذها الوكيل داخل شبكتك، وتبقى سلسلة الاتصال على جهازك.
بلا تصدير، بلا نسخة من مجموعتك في السحابة
بيانات المنتج وبنود الطلبات والأرقام التسلسلية—إذا كانت تعيش أصلًا في MongoDB، فإن تصديرها إلى CSV حتى يطبعها ملصق هو عبء خالص، والتصدير يصبح قديمًا لحظة كتابته.
يصل مركز البيانات zplCloud بالمجموعة مباشرة. وكيل CLI في شبكتك يحمل سلسلة الاتصال، والمنصة تصف الاستعلام، والوكيل يعيد فقط المستندات المطابقة. تبقى قاعدة البيانات غير قابلة للوصول من الإنترنت.
البنية
zplcloud proxy يحافظ على اتصال TLS خارجي واحد إلى api.zplcloud.com. لا شيء يستمع من جانبك، فلا منفذ وارد ولا استثناء جدار حماية. الاستعلام والفرز والترقيم تُدفع للأسفل: الوكيل يبني استعلام MongoDB حقيقيًا ويستدعي Find(filter).Sort(…).Skip(n).Limit(m). المجموعة لا تُنزَّل أبدًا.
الخطوة 1 - شغّل الوكيل مع MongoDB
# عدة أعلام --mongo مسموحة؛ الاسم هو ما تختاره في المنصة.
zplcloud proxy --agent "Lager" \
--mongo LOCAL="mongodb://admin:…@127.0.0.1:27017/products" \
--mongo PROD="mongodb://admin:…@mongo.internal.lan:27017/erp"
يجب أن تتضمن سلسلة الاتصال اسم قاعدة البيانات—إنه الجزء بعد المضيف، …:27017/products. بدونه يكون للوكيل خادم بلا قاعدة للاستعلام.
من الأفضل إبقاء الأسرار خارج تاريخ الصدفة:
$env:ZPLCLOUD_MONGO_LOCAL_CONNECTION = "mongodb://admin:…@127.0.0.1:27017/products"
zplcloud proxy --agent "Lager"
اللافتة تؤكد ما سُجّل: MongoDB servers: LOCAL, PROD. ثق بالمنصة بـ--api-key <key> أو ZPLCLOUD_API_KEY؛ اجعله دائمًا بـ--service-install (systemd على Linux/Raspberry Pi، مهمة مجدولة على Windows) أو بـZPLCLOUD_MONGO_LOCAL_CONNECTION في docker-compose.agent.yml.
أعط الوكيل مستخدم قراءة فقط محصورًا في قاعدة البيانات التي يحتاجها. الوكيل ينفذ بذلك المستخدم، لذا فإن نموذج أدوار MongoDB نفسه هو حدود الصلاحيات.
الخطوة 2 - أنشئ مصدر البيانات
في مصادر البيانات يظهر الوكيل تحت Remote SQL Server برقاقة لكل مثيل MongoDB. النقر عليه يملأ النموذج مسبقًا.
| الحقل | القيمة |
|---|---|
| الاسم | Lager-Artikel |
| النوع | MongoDB |
| الخادم | LOCAL (الاسم من --mongo LOCAL=…) |
| المجموعة | products |
اختبار يرسل ping للمثيل ويعيد الخادم · قاعدة البيانات. الحقول تأخذ عينة من مستند وتدرج أسماء الحقول بأنواعها BSON.
اكتشاف الحقول يعمل من عينة، وهو ما يهم في مخزن بلا مخطط: إذا كانت المستندات الأولى تفتقد حقلًا تملكه مستندات لاحقة، فلن يظهر في القائمة. أضفه يدويًا في الربط إن كنت تعرف أنه موجود.
الخطوة 3 - كيف يُنفَّذ عامل تصفية
صف التصفية الذي تبنيه في الاستعلام—عمود وعامل وقيمة—يُترجم إلى مستند تصفية MongoDB وينفذه الوكيل:
| العامل في الواجهة | MongoDB |
|---|---|
يحتوي | { ean: { $regex: "40063813" } } |
يبدأ بـ | { ean: { $regex: "^40063813" } } |
= | { ean: "40063813" } |
> / < | { price: { $gt: 10 } } / { $lt: … } |
نتيجتان تستحقان القول بوضوح:
- لا سطح حقن. عامل تصفية MongoDB مستند BSON—بيانات، لا سلسلة تُحلَّل ككود. القيمة التي تحتوي
$أو{}تظل مجرد قيمة. $regexبلا مرساة لا يستطيع استخدام فهرس.يحتويعلى مجموعة كبيرة مسح كامل.يبدأ بـينتج^…، ويمكن لفهرس عادي على ذلك الحقل خدمته. على المجموعات الكبيرة، فضّله.
الحدود الصارمة (من كود الوكيل)
| الحد | القيمة |
|---|---|
| الصفوف لكل طلب | 1000 - limit مقيد، الافتراضي 100 |
| مهلة اختيار الخادم | 15 ثانية - مجموعة نسخ غير متاحة تفشل هنا، لا بعد دقائق |
| العملية المنفذة | قراءة فقط: Find مع فرز وتخطي وحد |
تُرقَّم مجموعات النتائج الأكبر: تطلب المنصة صفحة بعد صفحة بـSkip متزايد، كل منها محدودة بـ1000 مستند. طباعة 10 000 ملصق دفعةً واحدة لا تُبقي إذن أكثر من صفحة في الذاكرة، من أي جانب.
لاحظ أن Skip على إزاحة كبيرة يجعل MongoDB يعبر المستندات المتخطاة. للكتالوجات بمئات الآلاف، حقل فرز مفهرس يبقي ذلك رخيصًا؛ الفرز غير المفهرس لن يفعل.
الخطوة 4 - استخدمه في المصمم وPrint Views
- المصمم ← تبويب بيانات الاختبار ← مصدر البيانات: اختر مصدر البيانات واضغط تحميل، ويُنشأ كل ربط بمستندات حقيقية. أطوال الحقول والقيم المفقودة ومشكلات الترميز تظهر هنا لا على لفة الملصقات.
- Print Views ← الإعداد ← مصدر البيانات (مركز البيانات): المعاينة والطباعة تستخدمان الاستعلام الحي. المشغّل لا يرى أبدًا أن MongoDB خلفها.
أنماط الفشل
| العرض | السبب |
|---|---|
| الوكيل يعمل، لا رقاقة في مركز البيانات | اسم --mongo مفقود، أو مفتاح API ينتمي لمساحة عمل أخرى |
اختبار يفشل بعد ~15 ثانية | مهلة اختيار الخادم—مضيف غير متاح من جهاز الوكيل، منفذ خاطئ، أو مجموعة نسخ يعلن أعضاؤها أسماء لا يستطيع الوكيل حلها |
اختبار يفشل فورًا بخطأ مصادقة | مستخدم/كلمة مرور خاطئان، أو قاعدة المصادقة تختلف عن قاعدة البيانات (?authSource=admin) |
الحقول يفقد حقلًا | المستند المُستَعلَن لا يحتويه—المجموعات بلا مخطط تحتاج عينة ممثلة |
| التصفية لا تعيد شيئًا على قيمة تراها | عدم تطابق نوع: حقل رقمي يُقارن بسلسلة. تحقق من النوع في قائمة الحقول |
الخطة
مركز البيانات (مصادر MongoDB وSQL Server عبر وكيل CLI) جزء من خطة Pro. انظر صفحة الأسعار.