منصوبے کے بارے میں

migrate ایک ڈیٹا بیس مائیگریشن ٹول ہے جو Go میں لکھا گیا ہے، جسے کمانڈ لائن انٹرفیس کے طور پر یا Go پروجیکٹس میں لائبریری کے طور پر درآمد کیا جا سکتا ہے۔ یہ mattes/migrate سے فورک کیا گیا تھا۔ یہ کیسے کام کرتا ہے: migrate ترتیب شدہ ذریعہ سے مائیگریشن فائلیں پڑھتا ہے اور انہیں صحیح ترتیب میں ہدف ڈیٹا بیس پر لاگو کرتا ہے۔ ڈیزائن ڈیٹا بیس ڈرائیورز کو ہلکا اور "بے وقوف" رکھتا ہے — migrate خود منطق کو مربوط کرتا ہے اور رویے کی توثیق کرتا ہے، اور ڈرائیورز صارف کے ان پٹ کا اندازہ لگانے یا درست کرنے سے گریز کرتے ہیں، شک کی صورت میں ناکام ہو جاتے ہیں۔ معاون ڈیٹا بیسز میں PostgreSQL، PGX v4 اور v5، Redshift، Ql، Cassandra/ScyllaDB، SQLite، SQLite3، SQLCipher، MySQL/MariaDB، Neo4j، MongoDB، CrateDB، Shell، Google Cloud Spanner، CockroachDB، YugabyteDB، ClickHouse، Firebird، MS SQL Server اور rqlite شامل ہیں۔ کنکشن سٹرنگز URL فارمیٹ استعمال کرتی ہیں جیسے dbdriver://username:password@host:port/dbname?param1=true، اور محفوظ URL حروف کو فیصد انکوڈ کیا جانا چاہیے۔ مائیگریشن کے ذرائع میں مقامی فائل سسٹم، Go io/fs، Go-Bindata، pkger، GitHub، GitHub Enterprise، Bitbucket، GitLab، AWS S3 اور Google Cloud Storage شامل ہیں۔ CLI لائبریری کے گرد ایک پتلی پرت ہے، Ctrl+C (SIGINT) کو خوبصورتی سے ہینڈل کرتا ہے، اور جان بوجھ کر کنفیگ سرچ پاتھ، کنفیگ فائلیں یا جادوئی ماحولیاتی متغیر انجیکشن سے گریز کرتا ہے۔ ایک بنیادی کال اس طرح نظر آتی ہے: migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2۔ ایک Docker امیج (migrate/migrate) بھی شائع کی گئی ہے۔ ایک Go لائبریری کے طور پر، API کو v3 اور v4 ریلیز کے لیے مستحکم اور منجمد قرار دیا گیا ہے، Go ماڈیولز استعمال کرتا ہے، ڈیٹا بیس کی کرپشن سے بچنے کے لیے GracefulStop چینل کے ذریعے گریس فل اسٹاپ کی حمایت کرتا ہے، اپنا لاگر لانے کی اجازت دیتا ہے، اندرونی طور پر کم میموری اوور ہیڈ کے لیے io.Reader اسٹریمز استعمال کرتا ہے، اور اسے تھریڈ سیف اور گوروٹین لیک کے بغیر قرار دیا گیا ہے۔ اسے اسٹینڈ اکیلے یا WithInstance کے ذریعے موجودہ ڈیٹا بیس کلائنٹ کے ساتھ استعمال کیا جا سکتا ہے۔ مائیگریشن فائلیں اپ اور ڈاؤن مائیگریشن کے جوڑوں میں آتی ہیں، مثال کے طور پر 1481574547_create_users_table.up.sql اور .down.sql۔ پروجیکٹ ایک ابتدائی رہنما، CockroachDB اور PostgreSQL کے لیے سبق، مائیگریشن لکھنے کے لیے بہترین طرز عمل کی دستاویزات، اور ایک FAQ کی طرف اشارہ کرتا ہے۔ ورژن v3 اب تعاون یافتہ نہیں ہے؛ v4 اور master تعاون یافتہ لائنیں ہیں۔