بوكور أوكور اديت
غو لغة برمجية سريعة وذات ترميزية 相对简单。حين التعلم من غو، فإنه من المهم أن تتعلم كيفية بناء APIs وكيفية استخدامهم لتواصل مع البases الداتابيز. أثناء التعلم، قررت أن أأخذ مشروع ساعد علي ذلك: API تتبع بسيط للمخزون.
بينما يتعاون مع قاعدة بيانات SQL مثل Postgres، تعلمت أنه من المهم أن تقوم بالتغييرات في القاعدة البياناتية بطريقة مناسبة. إذا كان لديك شيماء قد تتغير في المستقبل، أفضل طريقة للقيام بذلك هي مع التحريكات البياناتية. هي تضمن أن تتم التغييرات في القاعدة البياناتية بدقة بدون تأثير على البيانات القائمة بالفعل.
في هذه المقالة، ستتعلم المزيد عن التحريكات البياناتية باستخدام Docker و Postgres.
جدول محتويات
- ما هو تحريك البases البياناتية؟
- كيفية بدء وتشغيل حاجز Docker
- كيفية إنشاء وتشغيل الشيماء بواسطة TablePlus
- كيفية تثبيت golang-migrate
- كيفية إنشاء تحريك جديد
- كيفية إنشاء وإلغاء البase البياناتية داخل وخارج حاجز Docker Postgres
- كيف تشاهد البيانات في TablePlus
- كيف تشغل التحريكات
- ختام
ما هو تحريك البيانات؟
ما هو تحريك البيانات ولماذا يجب أن تستخدمه؟ حسنًا، وكما تعلم، إن كنت مطورًا خلفيًا ، فإنك ستحتاج إلى تطوير نموذج للبيانات التي تريد تخزينها في قاعدة بيانات.
تساعد التحريكات البيانات في إدارة بيانات القاعدة الخاصة بها وفي هذه الحالة قاعدة بيانات تعاونية. تساعد هذه التحريكات على تغيير النماذج من وضعية حالية إلى وضعية متمنية. قد تتضمن إضافة جداول وأعمدة ، إزالة عناصر أو تغيير أنواع وقيود.
أحد الأهميات التي تتمتع بها تحريك البيانات هو جعل تغييرات القاعدة البيانات قابلة للتكرار والسلسلة بدون قلق من خسارة البيانات.
يوصف بالأفضل استخدام التحريكات إذا كنت غير متأكدًا من ما سيكون شكل نموذج البيانات النهائي. وفي هذه الحالة يمكنك تطبيق التغييرات بالتدريج.
كيف تبدأ وتشغل قارورة 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. أتمنى أن تعلمت من هذه المقالة.
Source:
https://www.freecodecamp.org/news/how-to-create-database-migrations-in-go/