انتقل إلى المحتوى
use-cases / send-a-teammate-a-database-state / hero
PIPE · بثّ المشاركة · POSTGRES

أرسل لزميلك حالة قاعدة بيانات بسطر واحد

زميل يصطدم بخطأ لا تستطيع إعادة إنتاجه. تجاوز الملف. pg_dump على حاسوبك المحمول يبثّ مباشرةً إلى psql عنده على staging — لا رفع، لا رابط، لا تنزيل. الأنبوب يوجّه البايتات عبره.

اقرأ توثيق Pipe API
use-cases / send-a-teammate-a-database-state / flow

مسار أنبوب واحد. أمرا curl. لا ملف وسيط.

Hoody Pipe API يحتفظ بأنبوب غير مُؤسَّس حتى خمس دقائق ريثما ينتظر اتّصال الجانب الآخر. حين تتّصلان، تتدفّق البايتات. لا شيء يُكتب على القرص في الخادم.

pipe.containers.hoody.com/dev-snapshot
PUT · المرسِلأنت · dev

ابثّ النسخة من pg_dump

# من جهازك المحمول للتطويرpg_dump --format=custom dev \  | curl -T - \      https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot[INFO] انتظار 1 جهة استقبال للاتصال…[INFO] البث إلى 1 جهة استقبال…[INFO] Transfer complete.

PUT (أو POST) بجسم بثّي. الخادم يطبع رسائل حالة على طرفيتك أثناء تأسّس الأنبوب — مفيد لترى حين يتّصل الجانب الآخر فعلاً.

GET · المستقبِلزميل · staging

اسحب النسخة مباشرةً إلى psql

# على صدفتهم التجهيزcurl https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot \  | pg_restore -d staging# rows imported · staging now matches dev

GET على نفس المسار يحجب حتى يتّصل المرسِل. البايتات التي يكتبها المرسِل تظهر كجسم استجابة. مرِّرها إلى pg_restore (أو psql) فتصل النسخة إلى قاعدة البيانات مباشرةً — لا ملف.

n=1 · تفرّع افتراضيالأنبوب ينتظر حتى 5 دقائق0 بايت مُخزّن على الخادم

إن أردت متابعة التقدّم دون استهلاك خانة مستقبِل، وجِّه curl ثالثاً إلى نفس المسار مع ?progress فتحصل على لوحة HTML مباشرة تُظهر البايتات المنقولة والسرعة والزمن المتبقّي.

use-cases / send-a-teammate-a-database-state / steps

كيف يبدو الأمر في الزمن الحقيقي

الحركات الأربع التي يتطلّبها وصول قاعدة بيانات dev إلى staging زميلك دون أن يلامس شيء قرصاً على خادم.

رسالة Slack → قاعدة بيانات مُستعادةأربع خطوات · أنبوب واحد
10:14 · تقرير خطأ01

زميل لا يستطيع إعادة الإنتاج

"هل تستطيع إرسال لي قاعدة البيانات الخاصة بك؟"

بالأمس كان هذا يعني pg_dump ودلو S3 ورابط مُوقَّع وملصق Slack.

10:14 · PUT02

أنت تبثّ النسخة

pg_dump dev | curl -T - …/pipe/dev-snapshot

طرفيتك تطبع «Waiting for 1 receiver to connect…» وتجلس هناك. لا ملف يُنشأ محلياً أيضاً.

10:15 · GET03

الزميل يُشغّل المستقبِل

curl …/pipe/dev-snapshot | pg_restore

الأنبوب يتأسّس لحظة اتّصاله. البايتات تبدأ التدفّق من pg_dump عندك مباشرةً إلى pg_restore عنده.

10:18 · تمّ04

staging الآن يطابق dev

Transfer complete · 0 بايت على الخادم

استخدام القرص على الخادم يبقى صفراً. مسار الأنبوب ينسى أن النقل حدث لحظة انفصال الجانبَين.

use-cases / send-a-teammate-a-database-state / reasons

لماذا المسار يهزم الملف

عدد الأوامر نفسه الذي ستكتبه لرحلة S3 — مطروحاً منه الدلو والاعتماد والرفع والتنزيل والتنظيف.

لا تخزين

الخادم لا يحتفظ بالبايتات أبداً

Hoody Pipe وسيط بثّ، لا خدمة ملفات. النسخة موجودة على قرصك وقرصه؛ بينهما، فقط بايتات في الطيران. لا شيء يجب تنظيفه، لا شيء يمكن تسريبه.

لا ملفات كبيرة

الحجم محدود بالأنبوب، لا بالـ RAM

ليس هناك شريط تقدّم رفع تتفقّده لأنّه لا يوجد رفع. نسخة 40 جيجابايت تتحرّك بأي سرعة تستطيعها شبكتك وpg_restore عند زميلك — الأنبوب يُمرِّر فقط.

قابل للمشاهدة

أضف ?progress للوحة مباشرة

افتح نفس المسار مع ?progress على رابط ثالث وشاهد البايتات المنقولة والسرعة والزمن المتبقّي في الزمن الحقيقي. حتى 50 متفرّجاً لكل أنبوب، لا أحد منهم يستهلك خانة مستقبِل.

use-cases / send-a-teammate-a-database-state / punchline

حالة قاعدة البيانات كانت مُرفقاً. الآن أصبحت مساراً.

الملفات حالة في الراحة. المسارات حالة في الحركة. Hoody Pipe يجعل لقطة قاعدة البيانات هي الثانية — قابلة للعنونة، زائلة، ولا تجلس على خادم يجب أن تُنظّفه لاحقاً.

  • لا رفع
  • لا تنزيل
  • لا رابط للمشاركة
use-cases / send-a-teammate-a-database-state / replaces

ما يستبدله هذا

معظم الأدوات التي استخدمناها لمشاركة قاعدة بيانات dev هي بقايا من زمن لم نكن نستطيع فيه بثّ بايتات بين طرفيّتَين عبر HTTP. الأنبوب يجعلها كلّها غير ضروريّة.

  • AWS S3 + رابط مُوقَّعدلو، اعتماد، رفع، رابط مدّته 24 ساعة
  • Dropbox / Google Driveتسجيل دخول، مشاركة يدويّة، انتظار المزامنة
  • رفعات ملفات Slackسقف 30 ميجابايت، ثم «من فضلك استخدم رابطاً حقيقياً»
  • خدمات بنمط WeTransferبوّابات بريد، صفحات إعلانات، نوافذ احتفاظ غامضة
  • حلول Postgres dblink الالتفافيّةافتح منفذاً على dev ليتمكّن staging من سحب الصفوف مباشرة
  • rsync عبر حصن SSHمفتاحا SSH، مُضيف قفز، وملف مؤقّت على كل طرف
use-cases / send-a-teammate-a-database-state / cta

أمرا curl. مسار واحد. staging عنده يطابق dev عندك الآن.

اقرأ دليل Pipe API
use-cases / send-a-teammate-a-database-state / related

اقرأ الآخرين