بوكور أوكور اديت

غو لغة برمجية سريعة وذات ترميزية 相对简单。حين التعلم من غو، فإنه من المهم أن تتعلم كيفية بناء APIs وكيفية استخدامهم لتواصل مع البases الداتابيز. أثناء التعلم، قررت أن أأخذ مشروع ساعد علي ذلك: API تتبع بسيط للمخزون.

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

في هذه المقالة، ستتعلم المزيد عن التحريكات البياناتية باستخدام Docker و Postgres.

جدول محتويات

ما هو تحريك البيانات؟

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

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

أحد الأهميات التي تتمتع بها تحريك البيانات هو جعل تغييرات القاعدة البيانات قابلة للتكرار والسلسلة بدون قلق من خسارة البيانات.

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

كيف تبدأ وتشغل قارورة Docker

افتح محررك وأنشئ دوراً جديدًا mkdir tracking-inventory-app.

ومن ثم أخذ صورة postgres من Docker Hub. أستخدمت التسمية postgres:14-alpine. يمكنك استخدام أي تسمية تريد.

في محررك، ألقِ تلك الأوامر التالية واضغط على Enter:

$ docker pull postgres:14-alpine

بعد تثبيته، قم بتشغيل الحاجز باستخدام أمر الdocker run:

$ docker run --name postgres14 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=passwordd -p 5432:5432 -d postgres:14-alpine

العلامة --name تعني اسم الحاجز. العلامة -e تعني متغيرات البيئة. العلامة -p تعني المنشر. يجب أن تجري حاجزك على نقطة معينة للبوت. العلامة -d تعني أنك تريد تشغيله في نمط منعزل.

بمجرد ضغط الEnter، افتح جهازك الخاص بDocker Desktop إذا كان مثبتًا. إذا كان ما يوجد لديك، يمكنك تحميله من موقع docker website.

في جهازك الخاص بDocker Desktop، يجب أن ترى أن تم بدء الحاجز:

يمكنك انشاء اتصال مع البيانات بوسيلة TablePlus:

اختبر الاتصال. إذا كان يقول “ok”, إذهب به. إذا كنت في Windows و ظهر خطأ تحقيقي للمصادقة، تعقد إلى زر البدء و اضغط على Run. في المبيدات، أدخل services.msc و اضغط Enter. ابحث عن postgres و اضغط على خدمة التوقف. ثم حاول الاتصال مجددًا.

كيفية إنشاء وتشغيل البرنامج بواسطة TablePlus

لقد قمت بإنشاء شكل مسبق البرنامج tracking-inventory بواسطة db diagram. هذا التتبع-المخزون يتيح لك إضافة عنصر ورقم تسلسلي وقيمة. لذلك سيكون له الحقول item، serial_number، id و created_at.

CREATE TABLE "inventory" (
  "id" uuid PRIMARY KEY,
  "item" varchar NOT NULL,
  "serial_number" varchar NOT NULL,
  "user" uuid NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT 'now()'
);

CREATE TABLE "user" (
  "id" uuid PRIMARY KEY,
  "name" varchar NOT NULL,
  "email" varchar UNIQUE NOT NULL,
  "password" varchar NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT 'now()'
);

CREATE INDEX ON "inventory" ("item");

ALTER TABLE "inventory" ADD FOREIGN KEY ("user") REFERENCES "user" ("id");

هذا ما يبدو عليه. يمكنك فتح TablePlus الخاص بك وإضافة البرمجيات PostgreSQL المنتجة وتشغيلها.

كيفية تثبيت golang-migrate

الخطوة التالية هي تثبيت golang-migrate على نظامك. أنا أستخدم لينكس على ويندوز في هذه الدرسة.

للتثبيت، قم بزيارة هذه المساعدة.

أنا أستخدم لينكس لذا سأستخدم curl:

$ curl -L https://github.com/golang-migrate/migrate/releases/download/v4.12.2/migrate.linux-amd64.tar.gz | tar xvz

بمجهد تم تثبيته بنجاح، فعليك في محررك التحكم في أمر migrate -help لرؤية أوامره المختلفة.

كيفية إنشاء مigración جديدة

بعد تثبيت golang-migrate، يمكنك إنشاء نص مigración جديد.

أولاً في محررك التحكم وداخل دليل التتبع التقني، افتح VS code باستخدام أمر code.

بمجهد تم ذلك، قم بإنشاء مجلد جديد يدعى db ومجلد آخر داخل مجلد db يدعى migrations.

ومن ثم في محررك التحكم، أجري أمرًا من التالي:

 $ migrate create -ext sql -dir db/migration -seq tracking_inventory_schema

العلامة -ext تشير إلى التوسيع الذي تريد إنشائه للمigración. في هذه الحالة يوجد الsql. العلامة -dir تشير إلى الدليل الذي تريد إنشاء الملفات فيه. والعلامة -seq تشير إلى رقم التسلسل لملفات المigraciones.

في VS code، يوجد ملفان: أحدهما لup والآخر لdown. الأول يستخدم للحدود الأعلى في الدليل بينما الآخر للتراجع عن التغييرات.

في ملف up، ستقوم بالحصول على نموذج الشبكة في الملف.

تبدو هيكليتي كالتالي:

CREATE TABLE "inventory" (
  "id" uuid PRIMARY KEY,
  "item" varchar NOT NULL,
  "serial_number" varchar NOT NULL,
  "user" uuid NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT 'now()'
);

CREATE TABLE "user" (
  "id" uuid PRIMARY KEY,
  "name" varchar NOT NULL,
  "email" varchar UNIQUE NOT NULL,
  "password" varchar NOT NULL,
  "created_at" timestamptz NOT NULL DEFAULT 'now()'
);

CREATE INDEX ON "inventory" ("item");

ALTER TABLE "inventory" ADD FOREIGN KEY ("user") REFERENCES "user" ("id");

قد تبدو مختلفة بحسب ماذا تقوم ببناء المشروع.

لملف down، فقط قم بالصق هذا:

DROP TABLE IF EXISTS inventory;
DROP TABLE IF EXISTS user;

يجب إلغاء الجدول المخزن أولاً لأنه يشير إلى جدول المستخدم.

كيفية إنشاء وإلغاء قاعدة البيانات داخل وخارج حاوية Docker Postgres

تحقق إذا كانت حاوية Docker التي تعمل باستخدام الأمر:

$ docker ps

إذا لم تكن كذلك، استخدم الأمر docker start ${اسم الحاوية} للبدء.

الخطوة التالية هي الوصول إلى واجهة الشيل Postgres باستخدام الأمر التالي لأنني على Linux:

$ docker exec -it postgres14 bin/bash

ويشير العلامة -it إلى الشيل التفاعلي/الطرفية. داخل هذه الشيل، يمكنك تنفيذ الأمر createdb:

/# createdb --username=root --owner=root tracking_inventory

بمجرد إنشاءها، يمكنك تنفيذ الأمر psql للتفاعل مع قاعدة البيانات:

/# psql tracking-inventory
psql (14.12)
Type "help" for help.

tracking_inventory=#

يمكنك أيضًا حذف قاعدة البيانات بالأمر dropdb.

للخروج من الشيل، استخدم الأمر exit.

لإنشاء قاعدة البيانات خارج حاوية Postgres، قم بالصق الأمر التالي:

$ docker exec -it postgres14 createdb --username=root --owner=root tracking_inventory

كيفية عرض قاعدة البيانات في TablePlus

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

ستظهر قاعدة البيانات التي تم إنشاؤها، ثم فقط قم بالنقر على open للفتح

كيفية تنفيذ المهاجرات

لتنفيذ المهاجرات، قم بتنفيذ هذا الأمر في محطة الترميال:

$ migrate -path db/migration -database "postgresql://root:passwordd@localhost:5432/tracking_inventory?sslmode=disable" -verbose up

تحدد العلامة -path مسار الملفات التي يتضمنها الملفات التحريرية. يحدد الخيار -database رابط البيانات.

في الرابط، يوجد المحرك الخاص بـ postgresql. ويوجد اسم المستخدم وكلمة المرور هما root و passwordd بالمرور. ومن المهم أيضًا إضافة خيار sslmode=disable لأن Postgres لا يتم تفعيل الSSL بشكل افتراضي.

هيا بتنفيذ التحركات البياناتية الآن:

$ migrate -path db/migration -database "postgresql://root:passwordd@localhost:5432/tracking_inventory?sslmode=disable" -verbose up
calhost:5432/tracking_inventory?sslmode=disable" -verbose up
2024/06/25 00:13:25 Start buffering 1/u tracking_inventory_schema
2024/06/25 00:13:25 Read and execute 1/u tracking_inventory_schema
2024/06/25 00:13:26 Finished 1/u tracking_inventory_schema (read 43.186044ms, ran 255.501635ms)
2024/06/25 00:13:26 Finished after 312.928488ms
2024/06/25 00:13:26 Closing source and database

تم التحرك البياناتي بنجاح!

إعادة تحديد البيانات ومشاهدة الأجهزة الجديدة:

##الخلاصة

خلال هذا الترميل، تعلمت كيفية كتابة وتنفيذ التحركات البياناتية بسهولة في Go بواسطة Docker و Postgres. أتمنى أن تعلمت من هذه المقالة.

يمكنك الاتصال معي على twitter أو على linkedin.