1. ภาพรวม
ชุด Codelab นี้ (บทแนะนำแบบลงมือปฏิบัติด้วยตนเอง) มีจุดมุ่งหมายเพื่อช่วยให้นักพัฒนาแอป Google App Engine (มาตรฐาน) ปรับแอปให้ทันสมัยด้วยการแนะนำการย้ายข้อมูลหลายๆ ครั้ง การย้ายข้อมูลส่วนใหญ่เกี่ยวข้องกับการย้ายออกจากบริการที่มาพร้อมกับรันไทม์เดิม เนื่องจากรันไทม์รุ่นถัดไปมีความยืดหยุ่นมากกว่า ทำให้ผู้ใช้มีตัวเลือกบริการที่หลากหลายมากขึ้น อีกวิธีในการปรับปรุงแอปให้ทันสมัยคือการอัปเกรดเป็นผลิตภัณฑ์เวอร์ชันใหม่กว่า ซึ่งเป็นหัวข้อของ Codelab นี้
ผู้ใช้ App Engine ที่เข้าถึง Datastore ด้วยไลบรารีของไคลเอ็นต์ Cloud NDB หรือ Cloud Datastore ไม่จำเป็นต้องย้ายข้อมูลเพิ่มเติม อย่างไรก็ตาม Cloud Firestore คือที่เก็บข้อมูล NoSQL ล่าสุดที่ปรับขนาดได้ มีความพร้อมใช้งานสูง และมีฟีเจอร์จากฐานข้อมูลเรียลไทม์ของ Firebase
คุณมาถูกที่แล้วหากเป็นนักพัฒนาแอปที่ต้องการใช้ Firestore เพื่อใช้ประโยชน์จากฟีเจอร์ต่างๆ หรืออย่างน้อยก็มีความสนใจมากพอที่จะสำรวจสิ่งที่ต้องทำในการย้ายข้อมูล บทแนะนำนี้จะสอนวิธีย้ายข้อมูลแอป App Engine ที่ใช้ Cloud Datastore ไปยัง Cloud Firestore
คุณจะได้เรียนรู้วิธีต่อไปนี้
- รับทราบความแตกต่างระหว่าง Datastore กับ Firestore
- ย้ายข้อมูลจาก Cloud Datastore ไปยัง Cloud Firestore
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud Platform ที่มีสิ่งต่อไปนี้
- ทักษะ Python ขั้นพื้นฐาน
- มีความรู้พื้นฐานเกี่ยวกับคำสั่ง Linux ทั่วไป
- ความรู้พื้นฐานเกี่ยวกับการพัฒนาและการทําให้ใช้งานได้ของแอป App Engine
- เราขอแนะนำให้คุณทำ Codelab ของโมดูลที่ 3 ให้เสร็จ รวมถึงพอร์ตไปยัง Python 3 ก่อนที่จะเริ่ม Codelab นี้ (โมดูลที่ 6)
- แอป Python 3 App Engine ของ Cloud Datastore ในโมดูล 3 ที่ใช้งานได้
แบบสำรวจ
คุณจะใช้ Codelab นี้อย่างไร
2. ฉากหลัง
Datastore ของ App Engine กลายเป็นผลิตภัณฑ์ของตัวเองในปี 2013 ซึ่งก็คือ Google Cloud Datastore และตอนนี้ก็พร้อมให้บริการแก่นักพัฒนาซอฟต์แวร์ภายนอก App Engine แล้ว ในปีถัดมา Google ได้เข้าซื้อ Firebase ในขณะนั้น Firebase เป็นที่รู้จักในด้านฐานข้อมูลแบบเรียลไทม์
ในช่วง 2-3 ปีที่ผ่านมา ทีม Firebase และ Cloud Datastore ได้ทำงานร่วมกันเพื่อผสานรวมฟีเจอร์บางอย่างของ Firebase เข้ากับ Datastore ด้วยเหตุนี้ ในปี 2017 เราจึงเปิดตัว Cloud Datastore รุ่นถัดไป เราจึงเปลี่ยนชื่อเป็น Cloud Firestore เพื่อให้สอดคล้องกับการรับช่วงฟีเจอร์บางอย่างของ Firebase
Cloud Firestore กลายเป็นกลไกการจัดเก็บข้อมูล NoSQL เริ่มต้นสำหรับโปรเจ็กต์ Google Cloud แอปใหม่สามารถใช้ Cloud Firestore ได้โดยตรง ส่วนฐานข้อมูล Datastore ที่มีอยู่จะได้รับการแปลงเป็น Firestore เบื้องหลัง และตอนนี้จะทำงานเป็น "Firestore ในโหมด Datastore" เพื่อรักษาความเข้ากันได้กับการดำเนินการของ Datastore ด้วยเหตุนี้ แอปพลิเคชันจึงใช้งาน Cloud Firestore ได้ในโหมดใดโหมดหนึ่งเท่านั้น และเมื่อตั้งค่าแล้วจะเปลี่ยนไม่ได้
ปัจจุบันเมื่อผู้ใช้สร้างโปรเจ็กต์ใหม่และเลือกโซลูชัน NoSQL ระบบจะแจ้งให้เลือก Firestore ในโหมด Datastore หรือ Firestore ในโหมดดั้งเดิม เมื่อผู้ใช้เพิ่มเอนทิตี Datastore แล้ว จะเปลี่ยนไปใช้ Firestore ไม่ได้ และในทำนองเดียวกัน เมื่อเลือกโหมดเนทีฟของ Firestore แล้ว ผู้ใช้จะเปลี่ยนกลับไปใช้ Datastore (หรือ Firestore ในโหมด Datastore) ไม่ได้อีก อ่านรายละเอียดเพิ่มเติมได้ในหน้าการเลือกระหว่าง Cloud Firestore ในโหมด Datastore หรือโหมด Firestore แบบเนทีฟในเอกสารประกอบ หากต้องการย้ายข้อมูลแอปไปยัง Firestore คุณต้องสร้างโปรเจ็กต์ใหม่ ส่งออก Datastore แล้วนำเข้าไปยัง Firestore บทแนะนำนี้มีจุดประสงค์เพื่อให้นักพัฒนาซอฟต์แวร์ทราบถึงความแตกต่างระหว่างการใช้ Cloud Datastore กับ Cloud Firestore
การย้ายข้อมูลนี้ไม่ใช่สิ่งที่เราคาดหวังให้ผู้ใช้ดำเนินการ จึงเป็นเหตุผลว่าทำไมการย้ายข้อมูลนี้จึงเป็นแบบเลือกได้ แม้ว่าการใช้ Cloud Firestore โดยตรงจะมีข้อดีที่ชัดเจน เช่น การตรวจสอบสิทธิ์ไคลเอ็นต์ การผสานรวมกฎของ Firebase และแน่นอนว่าฐานข้อมูลเรียลไทม์ของ Firebase แต่ขั้นตอนการย้ายข้อมูลก็ "ไม่สะดวก"
- คุณต้องใช้โปรเจ็กต์อื่นที่ไม่ใช่โปรเจ็กต์ของแอปปัจจุบัน
- ไม่สามารถเปลี่ยนโปรเจ็กต์ที่แอปเพิ่มเอนทิตี Datastore ไปเป็น Firestore ในโหมดดั้งเดิมได้
- ในทำนองเดียวกัน โปรเจ็กต์ที่เลือก Firestore ในโหมดดั้งเดิมจะเปลี่ยนกลับไปใช้ Firestore ในโหมด Datastore ไม่ได้
- ไม่มีเครื่องมือย้ายข้อมูลที่สตรีมข้อมูลจากโปรเจ็กต์หนึ่งไปยังอีกโปรเจ็กต์หนึ่งได้
- ฟีเจอร์ที่สำคัญบางอย่างของ Datastore ซึ่งรวมถึงเนมสเปซและอัตราการส่งผ่านข้อมูลการเขียนที่สูงขึ้น (>10,000/วินาที) จะไม่พร้อมใช้งานจาก Firestore
- เครื่องมือส่งออกและนำเข้าเป็นสถานการณ์ "ดั้งเดิม" และ "ทั้งหมดหรือไม่มีเลย"
- หากแอปมีเอนทิตี Datastore จำนวนมาก การส่งออกและนำเข้าไปยัง Firestore อาจใช้เวลาหลายชั่วโมง
- ในระหว่างนี้ แอปพลิเคชัน/บริการของคุณจะเขียน/อัปเดตข้อมูลไม่ได้
- กิจกรรมการย้ายข้อมูลจะนับรวมเป็นการใช้งานปกติ คุณอาจต้องกระจายกิจกรรมดังกล่าว (ในโควต้าประจำวันหากเป็นไปได้) เพื่อลดค่าใช้จ่าย
- เนื่องจากบริการใหม่ทำงานในโปรเจ็กต์อื่น คุณจึงต้องมีระยะเวลาหนึ่งเพื่อให้การอัปเดต DNS มีผล
- Datastore และ Firestore มีรูปแบบข้อมูลที่คล้ายกันแต่แตกต่างกัน ดังนั้นการย้ายข้อมูลจึงต้องอัปเดตวิธีการทำงานของแอป/บริการ
- ตอนนี้การค้นหาบรรพบุรุษจาก Datastore คือการค้นหาคอลเล็กชันของ Firestore (ค่าเริ่มต้น)
- การค้นหาประเภทกว้างจาก Datastore คือการค้นหากลุ่มคอลเล็กชันของ Firestore
- ดัชนีและการจัดการแตกต่างกัน เป็นต้น
อย่างไรก็ตาม หากคุณมีแอปที่ค่อนข้างตรงไปตรงมาซึ่งควรพิจารณาสำหรับการย้ายข้อมูล เตรียมจำลองการย้ายข้อมูลดังกล่าว หรือเพียงแค่ต้องการเรียนรู้เกี่ยวกับ Datastore กับ Firestore โปรดอ่านต่อ
ผู้ใช้ Python 2: Codelab การย้ายข้อมูลที่ไม่บังคับนี้จะแสดงใน Python 3 เท่านั้น แต่เนื่องจาก Cloud Firestore รองรับ 2.x ด้วย ผู้ใช้จึงสามารถประมาณความแตกต่างในการใช้งานได้ ตัวอย่างหนึ่งคือระเบียน Firestore ใช้สตริง Unicode (แทนสตริงไบต์) ดังนั้นจึงต้องมีu''ตัวบ่งชี้ชั้นนำสำหรับสตริงลิเทอรัลของ Python 2 ซึ่งหมายความว่าฟังก์ชัน 2.x store_visit() จะมีลักษณะดังนี้
def store_visit(remote_addr, user_agent):
doc_ref = fs_client.collection(u'Visit')
doc_ref.add({
u'timestamp': datetime.now(),
u'visitor': u'{}: {}'.format(remote_addr, user_agent),
})
นอกเหนือจากนั้น ไลบรารีของไคลเอ็นต์ควรทํางานในลักษณะเดียวกัน ปัญหาอื่นๆ ที่ควรพิจารณาคือไลบรารี Cloud Firestore 2.x จะ "หยุด" การพัฒนา ดังนั้นฟีเจอร์ใหม่ๆ จะใช้ได้เฉพาะในไลบรารีไคลเอ็นต์ Firestore 3.x เท่านั้น
หากต้องการดำเนินการย้ายข้อมูลนี้ต่อไป ขั้นตอนหลักของบทแนะนำนี้มีดังนี้
- การตั้งค่า/การเตรียมการ
- เพิ่มไลบรารี Cloud Firestore
- อัปเดตไฟล์แอปพลิเคชัน
3. การตั้งค่า/การเตรียมการ
ก่อนที่จะไปที่ส่วนหลักของบทแนะนำนี้ เรามาตั้งค่าโปรเจ็กต์ รับโค้ด แล้วจึงติดตั้งใช้งานแอปพื้นฐานเพื่อให้ทราบว่าเราเริ่มต้นด้วยโค้ดที่ใช้งานได้
1. ตั้งค่าโปรเจ็กต์
เราขอแนะนำให้ใช้โปรเจ็กต์เดียวกันกับที่ใช้สำหรับทำโค้ดแล็บโมดูลที่ 3 ให้เสร็จสมบูรณ์ หรือจะสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์อื่นที่มีอยู่ซ้ำก็ได้ ตรวจสอบว่าโปรเจ็กต์มีบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่และเปิดใช้ App Engine (แอป) แล้ว
2. รับแอปตัวอย่างพื้นฐาน
ข้อกำหนดเบื้องต้นอย่างหนึ่งของ Codelab นี้คือการมีแอปตัวอย่างของโมดูล 3 ที่ใช้งานได้ หากคุณไม่มี ให้ไปทำตามบทแนะนำโมดูล 3 (ลิงก์ด้านบน) ให้เสร็จก่อนที่จะดำเนินการต่อที่นี่ หรือหากคุ้นเคยกับเนื้อหาอยู่แล้ว คุณก็เริ่มได้เลยโดยคัดลอกโค้ดของโมดูลที่ 3 ด้านล่าง
ไม่ว่าคุณจะใช้โค้ดของคุณเองหรือโค้ดของเรา เราจะเริ่มที่โค้ดของโมดูล 3 Codelab โมดูลที่ 6 นี้จะแนะนำแต่ละขั้นตอน และเมื่อทำเสร็จแล้ว โค้ดควรมีลักษณะคล้ายกับโค้ดที่จุดสิ้นสุด (บทแนะนำนี้ใช้ได้กับ Python 3 เท่านั้น)
- เริ่มต้น: ที่เก็บโมดูล 3
- เสร็จสิ้น: ที่เก็บโมดูล 6
- ที่เก็บทั้งหมด (โคลนหรือดาวน์โหลด ZIP)
ไดเรกทอรีของไฟล์โมดูลที่ 3 (ของคุณหรือของเรา) ควรมีลักษณะดังนี้
$ ls
README.md main.py templates
app.yaml requirements.txt
3. (อีกครั้ง) ทำให้แอปโมดูล 3 ใช้งานได้
ขั้นตอนการเตรียมความพร้อมที่เหลือที่คุณต้องดำเนินการตอนนี้มีดังนี้
- ทบทวนความรู้เกี่ยวกับ
gcloudเครื่องมือบรรทัดคำสั่ง (หากจำเป็น) - (อีกครั้ง) ทำให้โค้ดโมดูล 3 ใช้งานได้ใน App Engine (หากจำเป็น)
เมื่อคุณทำตามขั้นตอนเหล่านั้นเรียบร้อยแล้วและยืนยันว่าใช้งานได้ เราจะดำเนินการต่อในบทแนะนำนี้โดยเริ่มจากไฟล์การกำหนดค่า
ข้อกำหนดของ Python 2
- ตรวจสอบว่า
app.yaml(ยังคง) อ้างอิงแพ็กเกจที่รวมของบุคคลที่สาม:grpcioและsetuptools - ตรวจสอบว่า
appengine_config.pyยังคงใช้pkg_resourcesและgoogle.appengine.ext.vendorเพื่อชี้แอปไปยังแหล่งข้อมูลของบุคคลที่สาม - ในส่วนถัดไปที่อัปเดต
requirements.txtคุณต้องใช้google-cloud-firestore==1.9.0เนื่องจากเป็นไลบรารีของไคลเอ็นต์ Python Firestore เวอร์ชันสุดท้ายที่เข้ากันได้กับ 2.x- หาก
requirements.txtมีรายการสำหรับgoogle-cloud-coreให้ปล่อยไว้เช่นนั้น - ลบ
libแล้วติดตั้งอีกครั้งด้วยpip install -t lib -r requirements.txt
- หาก
4. อัปเดตไฟล์การกำหนดค่า (เพิ่มไลบรารี Cloud Firestore)
นอกเหนือจากการตั้งค่าแล้ว ขั้นตอนถัดไปที่ต้องทำคือการอัปเดตการกำหนดค่าตามด้วยไฟล์แอปพลิเคชัน สำหรับกรณีแรก การเปลี่ยนแปลงการกำหนดค่าเพียงอย่างเดียวคือการสลับแพ็กเกจเล็กน้อยในไฟล์ requirements.txt ดังนั้นมาดำเนินการกันเลย
แทนที่บรรทัด google-cloud-datastore ด้วย google-cloud-firestore ใน requirements.txt เพื่อให้มีลักษณะดังนี้
Flask==1.1.2
google-cloud-firestore==2.0.2
เราขอแนะนำให้ใช้ไลบรารีแต่ละรายการในเวอร์ชันล่าสุด โดยหมายเลขเวอร์ชันด้านบนเป็นเวอร์ชันล่าสุด ณ เวลาที่เขียนบทความนี้ โค้ดในโฟลเดอร์ที่เก็บ FINISH จะได้รับการอัปเดตบ่อยกว่าและอาจมีเวอร์ชันใหม่กว่า
ไม่มีการเปลี่ยนแปลงการกำหนดค่าอื่นๆ ดังนั้น app.yaml และ templates/index.html จะยังคงเหมือนเดิม
5. อัปเดตไฟล์แอปพลิเคชัน
มีไฟล์แอปพลิเคชันเพียงไฟล์เดียวคือ main.py ดังนั้นการเปลี่ยนแปลงทั้งหมดในส่วนนี้จึงมีผลกับไฟล์นั้นเท่านั้น
1. การนำเข้า
การเปลี่ยนการนำเข้าแพ็กเกจเป็นการเปลี่ยนแปลงเล็กน้อยจาก datastore เป็น firestore ดังนี้
- ก่อน:
from google.cloud import datastore
- หลังจากนั้น
from google.cloud import firestore
2. การเข้าถึง Firestore
หลังจากเริ่มต้น Flask แล้ว ให้สร้างไคลเอ็นต์ Firestore ทำการเปลี่ยนแปลงที่คล้ายกันกับด้านบน แต่เป็นการเริ่มต้นไคลเอ็นต์
- ก่อน:
app = Flask(__name__)
ds_client = datastore.Client()
- หลังจากนั้น
app = Flask(__name__)
fs_client = firestore.Client()
การย้ายข้อมูลจาก Cloud NDB ไปยัง Cloud Datastore ทำให้คุณได้ดำเนินการที่ซับซ้อนเพื่อไปยัง Cloud Firestore แล้ว Datastore ช่วยให้คุณสร้างระเบียนข้อมูลในรูปแบบของเอนทิตีที่ประกอบด้วยพร็อพเพอร์ตี้ทั่วไปและจัดกลุ่มตามคีย์ ระเบียนข้อมูลใน Firestore คือเอกสารที่ประกอบด้วยคู่คีย์-ค่า และจัดกลุ่มไว้ด้วยกันเป็นคอลเล็กชัน การย้ายข้อมูลจาก Datastore กำหนดให้คุณต้องพิจารณาความแตกต่างเหล่านี้ เนื่องจากความแตกต่างจะปรากฏขึ้นเมื่อคุณสร้างบันทึกข้อมูลและค้นหาบันทึกข้อมูล ผลลัพธ์ที่ได้อาจแตกต่างกันไปตามความซับซ้อนของโค้ด Datastore
สำหรับ Datastore คุณจะสร้างการค้นหาตามประเภทเอนทิตีพร้อมกับเกณฑ์การกรองและการจัดเรียง สำหรับ Firestore การค้นหาข้อมูลจะคล้ายกัน มาดูตัวอย่างกันสักเล็กน้อย โดยสมมติว่ามีค่าการค้นหา ไคลเอ็นต์ (ds_client หรือ fs_client ตามลำดับ) และการนำเข้าดังนี้
from datetime import datetime
from firestore.Query import DESCENDING
OCT1 = datetime(2020, 10, 1)
LIMIT = 10
สำหรับ Datastore ให้ค้นหา Visit เอนทิตี 10 รายการล่าสุดที่ใหม่กว่าวันที่ 1 ต.ค. 2020 โดยเรียงจากใหม่ไปเก่า
query = ds_client.query(kind='Visit')
query.add_filter('timestamp', '>=', datetime(2020, 10, 1))
query.order = ['-timestamp']
return query.fetch(limit=LIMIT)
ทำเช่นเดียวกันกับ Firestore จากVisit คอลเล็กชัน
query = fs_client.collection('Visit')
query.where('timestamp', '>=', datetime(2020, 10, 1))
query.order_by('timestamp', direction=DESCENDING)
return query.limit(LIMIT).stream()
คำค้นหาของแอปตัวอย่างจะง่ายกว่า (ไม่มีคําสั่ง "WHERE") โค้ด Cloud Datastore มีดังนี้
- ก่อน:
def store_visit(remote_addr, user_agent):
entity = datastore.Entity(key=ds_client.key('Visit'))
entity.update({
'timestamp': datetime.now(),
'visitor': '{}: {}'.format(remote_addr, user_agent),
})
ds_client.put(entity)
def fetch_visits(limit):
query = ds_client.query(kind='Visit')
query.order = ['-timestamp']
return query.fetch(limit=limit)
เมื่อย้ายข้อมูลไปยัง Firestore คุณจะพบว่าการสร้างเอกสารใหม่นั้นคล้ายกับการสร้างเอนทิตี และการค้นหาจะเหมือนกับที่แสดงไว้ก่อนหน้านี้
- หลังจากนั้น
def store_visit(remote_addr, user_agent):
doc_ref = fs_client.collection('Visit')
doc_ref.add({
'timestamp': datetime.now(),
'visitor': '{}: {}'.format(remote_addr, user_agent),
})
def fetch_visits(limit):
visits_ref = fs_client.collection('Visit')
visits = (v.to_dict() for v in visits_ref.order_by('timestamp',
direction=firestore.Query.DESCENDING).limit(limit).stream())
return visits
ฟังก์ชันหลัก root() ยังคงเหมือนเดิมเช่นเดียวกับไฟล์เทมเพลต index.html ตรวจสอบการเปลี่ยนแปลงอีกครั้ง บันทึก นำไปใช้ และยืนยัน
6. สรุป/ล้างข้อมูล
ติดตั้งใช้งานแอปพลิเคชัน
นำแอปไปใช้งานอีกครั้งด้วย gcloud app deploy และยืนยันว่าแอปทำงานได้ ตอนนี้โค้ดของคุณควรตรงกับโค้ดในที่เก็บโมดูล 6 (หรือเวอร์ชัน 2.x หากคุณต้องการ)
หากคุณข้ามมาดูซีรีส์นี้โดยไม่ได้ทำ Codelab ก่อนหน้านี้ แอปจะไม่เปลี่ยนแปลง แต่จะลงทะเบียนการเข้าชมทั้งหมดในหน้าเว็บหลัก (/) และจะมีลักษณะดังนี้เมื่อคุณเข้าชมเว็บไซต์มากพอ

ขอแสดงความยินดีที่ย้ายข้อมูลโมดูล 6 ที่ไม่บังคับนี้เสร็จสมบูรณ์ การย้ายข้อมูลนี้อาจเป็นการย้ายข้อมูลครั้งสุดท้ายที่คุณทำได้ในส่วนของการจัดเก็บข้อมูล App Engine การย้ายข้อมูลอีกทางเลือกหนึ่งที่คุณอาจพิจารณาคือการทำคอนเทนเนอร์แอปสำหรับ Cloud Run หากยังไม่ได้ดำเนินการ (ดูโมดูลที่ 4 และ 5 ใน Codelab ที่ลิงก์ไว้ด้านล่าง)
ไม่บังคับ: ล้างข้อมูล
แล้วการล้างข้อมูลเพื่อหลีกเลี่ยงการเรียกเก็บเงินจนกว่าคุณจะพร้อมที่จะไปยัง Codelab การย้ายข้อมูลถัดไปล่ะ ในฐานะนักพัฒนาแอปที่มีอยู่ คุณน่าจะทราบข้อมูลราคาของ App Engine อยู่แล้ว
ไม่บังคับ: ปิดใช้แอป
หากยังไม่พร้อมที่จะไปยังบทแนะนำถัดไป ให้ปิดใช้แอปเพื่อหลีกเลี่ยงการเรียกเก็บเงิน เมื่อพร้อมที่จะไปที่ Codelab ถัดไป คุณก็เปิดใช้ฟีเจอร์นี้อีกครั้งได้ ขณะที่แอปถูกปิดใช้ แอปจะไม่ได้รับการเข้าชมใดๆ ที่จะทำให้เกิดค่าใช้จ่าย แต่สิ่งอื่นที่คุณอาจถูกเรียกเก็บเงินคือการใช้งาน Firestore หากเกินโควต้าฟรี ดังนั้นให้ลบข้อมูลให้เพียงพอเพื่อให้อยู่ในขีดจำกัดนั้น
ในทางกลับกัน หากคุณไม่ต้องการดำเนินการย้ายข้อมูลต่อและต้องการลบทุกอย่างออกทั้งหมด คุณสามารถปิดโปรเจ็กต์ได้
ขั้นตอนถัดไป
นอกเหนือจากบทแนะนำนี้แล้ว ยังมี Codelab โมดูลการย้ายข้อมูลอื่นๆ อีกหลายรายการที่คุณอาจพิจารณาได้ ดังนี้
- Module 7: คิวงานแบบพุชของ App Engine (ต้องระบุหากคุณใช้คิวงาน [push])
- เพิ่ม
taskqueueงานแบบพุชของ App Engine ไปยังแอปโมดูล 1 - เตรียมผู้ใช้ให้พร้อมสำหรับการย้ายข้อมูลไปยัง Cloud Tasks ในโมดูลที่ 8
- เพิ่ม
- Module 4: ย้ายข้อมูลไปยัง Cloud Run ด้วย Docker
- สร้างคอนเทนเนอร์แอปเพื่อเรียกใช้ใน Cloud Run ด้วย Docker
- การย้ายข้อมูลนี้ช่วยให้คุณใช้ Python 2 ต่อไปได้
- Module 5: ย้ายข้อมูลไปยัง Cloud Run ด้วย Cloud Buildpacks
- สร้างคอนเทนเนอร์ของแอปเพื่อเรียกใช้ใน Cloud Run ด้วย Cloud Buildpacks
- คุณไม่จำเป็นต้องทราบข้อมูลใดๆ เกี่ยวกับ Docker, คอนเทนเนอร์ หรือ
Dockerfile - กำหนดให้แอปของคุณย้ายข้อมูลไปยัง Python 3 แล้ว (Buildpack ไม่รองรับ Python 2)
7. แหล่งข้อมูลเพิ่มเติม
ปัญหา/ความคิดเห็นเกี่ยวกับ Codelab โมดูลการย้ายข้อมูล App Engine
หากพบปัญหาเกี่ยวกับ Codelab นี้ โปรดค้นหาปัญหาของคุณก่อนที่จะยื่นเรื่อง ลิงก์สำหรับค้นหาและสร้างปัญหาใหม่
แหล่งข้อมูลเกี่ยวกับการย้ายข้อมูล
คุณดูลิงก์ไปยังโฟลเดอร์ที่เก็บสำหรับโมดูลที่ 3 (START) และโมดูลที่ 6 (FINISH) ได้ในตารางด้านล่าง นอกจากนี้ คุณยังเข้าถึงได้จากที่เก็บสำหรับการย้ายข้อมูล App Engine ทั้งหมด ซึ่งคุณสามารถโคลนหรือดาวน์โหลดไฟล์ ZIP ได้
Codelab | Python 2 | Python 3 |
(รหัส) | ||
โมดูล 6 | (ไม่มี) |
ทรัพยากร App Engine
แหล่งข้อมูลเพิ่มเติมเกี่ยวกับการย้ายข้อมูลนี้มีดังนี้
- ข้อมูลอ้างอิงของ Python Cloud Datastore และ Cloud Firestore
- การย้ายข้อมูลไปยัง Python 3 และรันไทม์รุ่นถัดไปของ GAE
- ทั่วไป