Cloud SQL هي خدمة قواعد بيانات مُدارة بالكامل تسهّل إعداد قواعد البيانات الارتباطية وصيانتها وإدارتها على Google Cloud. يمكنك استخدام Cloud SQL مع Cloud SQL for MySQL أو Cloud SQL for PostgreSQL.
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية إعداد مثيل Cloud SQL لـ MySQL، ثم تعديل تطبيق Spring Boot لاستخدام مثيل Cloud SQL كمساحة تخزين خلفية. يوفّر Spring Boot Starter for Google Cloud SQL DataSource تم إعداده تلقائيًا، ما يتيح لك الاستفادة بسهولة من Cloud SQL مع إجراء الحدّ الأدنى من التغييرات على الرمز. يستخدم هذا الدرس التطبيقي حول الترميز رمز المصدر الخاص بتطبيق Spring Petclinic.
المتطلبات الأساسية
- معرفة بلغة البرمجة Java وأدواتها
- معرفة أدوات تحرير النصوص العادية في Linux، مثل Vim وEmacs وnano
المهام التي ستنفذها
- استخدام Cloud SQL في تطبيق Spring Boot
المتطلبات
- مشروع Google Cloud
- متصفّح، مثل Google Chrome أو Firefox
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب).
تذكَّر معرّف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID
.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.
لن تكلفك هذه التجربة العملية أكثر من بضعة دولارات، ولكن قد تكون التكلفة أعلى إذا قررت استخدام المزيد من الموارد أو إذا تركتها قيد التشغيل.
يمكن للمستخدمين الجدد في Google Cloud الاستفادة من فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell
.
إذا لم يسبق لك بدء Cloud Shell، ستظهر لك شاشة وسيطة (أسفل الصفحة) توضّح ماهيته. في هذه الحالة، انقر على متابعة (ولن تظهر لك مرة أخرى). في ما يلي الشكل الذي ستظهر به هذه الشاشة لمرة واحدة:
يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم العمل في هذا الدرس البرمجي، إن لم يكن كله، باستخدام متصفّح أو جهاز Chromebook فقط.
بعد الاتصال بـ Cloud Shell، من المفترض أن تلاحظ أنّه تمّت مصادقتك وأنّ المشروع تمّ ضبطه مسبقًا على معرّف مشروعك.
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من إكمال عملية المصادقة:
gcloud auth list
ناتج الأمر
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
ناتج الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
ناتج الأمر
Updated property [core/project].
- بعد تشغيل Cloud Shell، يمكنك استخدام سطر الأوامر لإنشاء مثيل Cloud SQL جديد:
$ gcloud sql instances create my-instance
بعد اكتمال هذه العملية، سيصبح الجهاز الظاهري جاهزًا للاستخدام.
- الآن، أنشئ قاعدة بيانات ستستخدمها لتطبيق Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
يمكنك أيضًا الوصول إلى الجهاز الظاهري وضبطه من خلال Cloud Console.
- احصل على اسم اتصال المثيل بالتنسيق
project-id:zone-id:instance-id
من خلال تنفيذ الأمر التالي. ستستخدم هذا الرمز لاحقًا في ضبط تطبيق Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName
- ستستنسخ الآن تطبيق Petclinic وتختبره محليًا.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- انقر على معاينة الويب
في Cloud Shell، ثم اختَر معاينة على المنفذ 8080.
من المفترض أن تظهر الصفحة الرئيسية لتطبيق Petclinic كما هو موضّح هنا في متصفّحك:
- جرِّب إضافة البيانات. يستخدم التطبيق قاعدة بيانات HyperSQL في الذاكرة. ستنتقل الآن من HyperSQL إلى استخدام Cloud SQL كقاعدة بيانات.
تعديل ملف Maven pom.xml
عدِّل ملف pom.xml
كما هو موضّح هنا. يوفر التطبيق الأولي عنصر DataSource
تم إعداده تلقائيًا للاتصال بقاعدة بيانات Cloud SQL. يمكنك استخدام Vim أو nano أو Emacs لتعديل الملف.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<!-- Add Spring Cloud GCP Dependency BOM -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.0.0.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
<repositories>
<!-- Use Spring Milestone Repository -->
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestones Repository</name>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
تعديل ملف application-mysql.properties
- استبدِل محتوى
src/main/resources/application-mysql.properties
بالسمات التالية. عليك ضبط اسم اتصال المثيل من الخطوة السابقة.
src/main/resources/application-mysql.properties
database=mysql
# Delete the rest of the original content of the file and replace with the following:
spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME
# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring.datasource.initialization-mode=always
- أخيرًا، فعِّل ملفًا شخصيًا في Cloud SQL for MySQL في تطبيق Spring Boot عن طريق إضافة
mysql
إلى السمةapplication.properties' spring.profiles.active
:
src/main/resources/application.properties
# Keep the content of the file the same
...
# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql
- يمكنك بدء تشغيل تطبيق Spring Boot بشكل عادي باستخدام إضافة Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- بعد بدء تشغيل التطبيق، انقر على معاينة الويب
في شريط أدوات Cloud Shell، ثم اختَر معاينة على المنفذ 8080.
من المفترض أن تظهر لك الصفحة الرئيسية لـ Spring Petclinic مرة أخرى كما هو موضّح هنا في متصفّحك:
- أضِف إدخالاً لمالك حيوان أليف.
اختياري: التأكّد من أنّ Cloud SQL قد حفظ البيانات
يمكنك التأكّد من حفظ البيانات التي أدخلتها في Cloud SQL كما هو موضّح هنا. اضغط على مفتاح الإدخال (Return على أجهزة Macintosh) عندما يُطلب منك إدخال كلمة مرور.
$ gcloud sql connect my-instance -u root Whitelisting your IP for incoming connection for 5 minutes...done. Enter password: <Press Enter, there is no password by default> ... mysql> use petclinic; mysql> select * from owners;
اختياري: حذف مثيل Cloud SQL
بعد إيقاف تطبيقك، يمكنك حذف مثيل Cloud SQL باستخدام الأمر التالي:
$ gcloud sql instances delete my-instance
تعرّفت على كيفية الاتصال بخدمة Cloud SQL في تطبيق Spring Boot.