Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Google Big Table and App Engine
ผศ. ดร. กานดา รุณนะพงศา สายแก้ว
ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น
http://twitt...
หัวข้อที่จะพูด
BigTable
Google App Engine
2
BigTable คืออะไร
 BigTable คือระบบการเก็บข้อมูลแบบกระจายตามเซิร์ฟเวอร์นับ
พันตัวที่กูเกิลออกแบบเพื่อเก็บข้อมูลขนาดใหญ่ระด...
ประวัติของ Big Table
BigTable ถูกพัฒนาขึ้นมาในปี ค.ศ. 2004 โดยทีมนักวิจัยของกูเกิลซึ่ง
ประกอบด้วย
– Fay Chang, Jeffrey De...
แอปพลิเคชันที่ใช้ Bigtable
5
• ใช้ภายในกูเกิลกับผลิตภัณฑ์มากกว่า 60 ตัว
• ใช้โดยบุคคลหรือผลิตภัณฑ์
ที่ไม่ใช่ของกูเกิลผ่านก...
Traditional RDBMSs vs. BigTable
คุณลักษณะ Traditional
RDBMSs
BigTable
โมเดลการเก็บข้อมูล เป็นตาราง 2 มิติที่มีได้
หลายแถว ...
โมเดลการเก็บข้อมูลของ BigTable
BigTable เป็นแม็ปแบบจัดเรียงข้อมูล (sorted map) หลาย
มิติซึ่งเก็บข้อมูลแบบกระจาย (distribu...
ตัวอย่างการเก็บข้อมูลเว็บใน BigTable
8
• ชื่อของแถวจะเป็นชื่อที่อยู่ของเว็บโดยที่ชื่อโดเมนจะขึ้นมาก่อนเพื่อให้ชื่อ URL ที่...
แถวของตาราง
คีย์ของแถว (row keys) จะเก็บเป็น string ความยาวได้
สูงสุดถึง 64KB (โดยปกติจะยาว 10-100 Bytes)
การจัดเรียงข้อ...
ครอบครัวคอลัมน์ (Column Families)
คีย์ของคอลัมน์จะถูกจัดกลุ่มให้อยู่ในเซ็ตเดียวกันที่เรียกว่า
ครอบครัวคอลัมน์ (Column Fam...
การใช้ครอบครัวคอลัมน์
ครอบครัวคอลัมน์จะเป็นข้อมูลที่ใช้ในสิ่งต่อไปนี้
– การจัดการระดับของการเข้าถึงข้อมูล (access control...
คีย์ของคอลัมน์ (Column Key)
คีย์ของคอลัมน์จะอยู่ในรูปแบบ family:qualifier
ในกรณีของการเก็บเว็บเพจ
– ตัวอย่างของชื่อ colu...
การประทับเวลา (Timestamps)
ในแต่ละช่องของ BigTable สามารถมีข้อมูลได้หลาย
เวอร์ชันซึ่งแต่ละเวอร์ชันถูกอินเดกซ์ด้วยการประทั...
ตัวอย่างโค้ดในการเขียนข้อมูลที่
BigTable
// Open the table
Table *T = OpenOrDie(“/bigtable/web/webtable”);
// Write a new ...
ตัวอย่างโค้ดในการอ่านข้อมูลที่
BigTable
Scanner scanner(T);
ScanStream *stream;
stream = scanner.FetchColumnFamily(“anchor...
รูปแบบไฟล์ที่เก็บข้อมูล
BigTable ใช้ Google File System ในการเก็บไฟล์ล็อก (log
files) และไฟล์ข้อมูล (data files)
Google ...
ความเชื่อมโยงในการเก็บข้อมูล
 โครงสร้างของ BigTable จะประกอบด้วย 3 ส่วนหลัก
– ไลบรารีที่ลิงก์กับไคลเอนต์ที่เก็บและค้นหาข้...
หน้าที่ของเซิร์ฟเวอร์หลัก
กาหนดว่าแท็บเบล็กไหนจะในอยู่ในแท็บเบล็กเซิร์ฟเวอร์ใด
ทาให้เกิดความสดุลในการทางานของแท็บเบล็กเซ...
หน้าที่ของแท็บเบล็กเซิร์ฟเวอร์
จัดการกลุ่มของแท็บเบล็กตั้งแต่สิบตัวถึงพันตัวต่อแท็บ
เบล็กเซิร์ฟเวอร์
จัดการการอ่านและเขี...
สรุปโครงสร้างการเก็บข้อมูล
หนึ่ง BigTable คลัสเตอร์ (A BigTable cluster) จะประกอบไป
ด้วยหลายตาราง (table)
แต่ละตารางประก...
การประเมินประสิทธิภาพ
การทดลองนั้นทากับหนึ่ง BigTable คลัสเตอร์ที่
ประกอบด้วย N แท็บเบล็กเซิร์ฟเวอร์
– มีวัตถุประสงค์เพื่...
จานวนของโอเปอเรชันต่อวินาทีต่อ
แท็บเบล็กเซิร์ฟเวอร์
22
ผลการสรุปและวิเคราะห์
การอ่านข้อมูลแบบสุ่มใช้เวลามากที่สุดเนื่องจากต้องถ่าย
โอนข้อมูล 64 KB SSTable ผ่านเครือข่ายจาก GFS ...
จานวนโอเปอเรชันต่อวินาที
24
ผลสรุปและวิเคราะห์
จานวนโอเปอเรชันที่ทาเพิ่มตามจานวนแท็บเบล็ก
เซิร์ฟเวอร์แต่ไม่ได้เพิ่มแบบเชิงเส้นซึ่งมีสาเหตุมาจาก
– การ...
ข้อจากัดของ BigTable
 BigTable มีข้อจากัดในเรื่องของการไม่สนับสนุนคาสั่งสอบถาม
(query) บางประเภท เช่น
– การเปรียบเทียบข้อ...
หัวข้อที่จะพูด
BigTable
Google App Engine
27
Google App Engine คืออะไร
Google App Engine คือการบริการที่ทาให้ผู้ใช้สามารถ
พัฒนาเว็บแอปพลิเคชันโดยใช้เซิร์ฟเวอร์ของกูเก...
ข้อดีของ Google App Engine
 ผู้ใช้บริการไม่ต้องติดตั้งหรือซ่อมบารุงดูแลรักษาซอฟต์แวร์และ
ฮาร์ดแวร์ที่จาเป็นต้องมีเพื่อรัน...
ข้อเสียของการใช้ Google App Engine
ข้อมูลที่เป็นความลับขององค์กรไม่ได้อยู่ในเซิร์ฟเวอร์ที่
องค์กรสามารถบังคับควบคุมได้
ม...
แนวทางการพัฒนาเว็บ
31
สถาปัตยกรรมของ Google App Engine
32
Google App Engine ในฐานะ
Application Server
33
การพัฒนาเว็บแอปพลิเคชันบน GAE
โดยใช้ Python
 ดาวน์โหลดและติดตั้งเครื่องมือที่ใช้ในการพัฒนา
เรียนรู้การใช้เฟรมเวิร์ค weba...
App Engine Python SDK
เราสามารถพัฒนาและอัปโหลดแอปพลิเคชัน Python
สาหรับ Google App Engine โดยใช้ App Engine Python
softwa...
การดาวน์โหลด Python SDK
ให้ไปที่ http://code.google.com/appengine/downloads.html
เลือกGoogle App Engine SDK for Python
...
การพัฒนา Hello World Application
 แตกไฟล์ google_appengine_1.3.8.zip
 สร้างตัวจัดการการร้องขอแบบง่าย (Creating a Simple
...
สร้างตัวจัดการการร้องขอแบบง่าย
 สร้างไดเรกทอรี helloworld ภายใต้ไดเรกทอรี google_appengine
สร้างไฟล์ helloworld.py ในไดเ...
สร้างไฟล์ Configuration
แอปพลิเคชัน App Engine มีไฟล์ configuration ที่ชื่อว่าapp.yaml
ไฟล์นี้อธิบายเกี่ยวกับสคริปต์ที่จ...
ทดสอบแอปพลิเคชัน
 สั่งให้เว็บเซิร์ฟเวอร์เริ่มทางานโดยการใช้คาสั่ง dev_appserver.py
ทดสอบแอปพลิเคชันโดยเปิดเบราว์เซอร์ที่...
การใช้เฟรมเวิร์ก
หากผู้พัฒนาแอปพลิเคชันจะต้องเขียนโค้ดเยอะมากด้วย
ตนเอง ก็จะทาให้การพัฒนาแอปพลิเคชันเป็นไปช้าและมี
โอกาสม...
การใช้เฟรมเวิร์ก webapp
แอปพลิเคชัน webapp มี 3 ส่วน
– อย่างน้อยหนึ่ง RequestHandler คลาสที่ประมวลผลการ
ร้องขอและการสร้าง...
ลงทะเบียนแอปพลิเคชัน
ไปที่ https://appengine.google.com/
 กูเกิลจะให้กรอกข้อมูลของแอปพลิเคชันและเบอร์
โทรศัพท์เพื่อจะได้...
แก้ไขไฟล์ app.yaml
44
แก้ไขไฟล์ app.yaml โดยที่แก้ไขชื่อ application
ทาการอัปโหลดขึ้นเว็บ appspot.com
45
ใช้สคริปต์ appcfg.py และคาสั่ง update ในการอัปโหลดขึนเว็บ
เว็บแอปพลิเคชันที่อัปโหลดและลงทะเบียนแล้ว
46
สรุป
 Google App Engine เป็นการบริการที่ให้ผู้ใช้พัฒนาแอป
พลิเคชันบนแพลตฟอร์มของ Google ที่มีความสามารถ
ปรับขนาดได้ (scal...
แหล่งข้อมูลอ้างอิง
http://labs.google.com/papers/bigtable.html
http://www.isriya.com/node/1896/bigtable-and-
chubby-lock...
ขอขอบคุณ
http://twitter.com/krunapon
http://www.slideshare.net/krunapon
http://gear.kku.ac.th/~krunapon
krunapon@kku.a...
Upcoming SlideShare
Loading in …5
×

Google bigtableappengine

1,523 views

Published on

  • Be the first to comment

  • Be the first to like this

Google bigtableappengine

  1. 1. Google Big Table and App Engine ผศ. ดร. กานดา รุณนะพงศา สายแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น http://twitter.com/krunapon 1
  2. 2. หัวข้อที่จะพูด BigTable Google App Engine 2
  3. 3. BigTable คืออะไร  BigTable คือระบบการเก็บข้อมูลแบบกระจายตามเซิร์ฟเวอร์นับ พันตัวที่กูเกิลออกแบบเพื่อเก็บข้อมูลขนาดใหญ่ระดับ Perabytes (10^15 หรือ 2^50 bytes) ได้  BigTable เป็นระบบที่ได้รับการพิสูจน์แล้วว่า – สามารถเก็บข้อมูลจานวนมากและค้นหาข้อมูลขนาดใหญ่ได้ อย่างรวดเร็ว – มีความยืดหยุ่นในการเก็บข้อมูลที่มีความหลากหลาย (URLs, เว็บเพจ, และรูปภาพถ่ายทางดาวเทียม) 3
  4. 4. ประวัติของ Big Table BigTable ถูกพัฒนาขึ้นมาในปี ค.ศ. 2004 โดยทีมนักวิจัยของกูเกิลซึ่ง ประกอบด้วย – Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber จุดประสงค์ของการพัฒนา BigTable – ประยุกต์ใช้งานได้กว้างขวาง (Wide applicability) – ปรับขนาดได้ตามภาระงาน (Scalability) – ประสิทธิภาพสูง (High performance) – คงอยู่สูง (High availability) 4
  5. 5. แอปพลิเคชันที่ใช้ Bigtable 5 • ใช้ภายในกูเกิลกับผลิตภัณฑ์มากกว่า 60 ตัว • ใช้โดยบุคคลหรือผลิตภัณฑ์ ที่ไม่ใช่ของกูเกิลผ่านการใช้ Google App Engine
  6. 6. Traditional RDBMSs vs. BigTable คุณลักษณะ Traditional RDBMSs BigTable โมเดลการเก็บข้อมูล เป็นตาราง 2 มิติที่มีได้ หลายแถว แต่ละแถวมีได้ หลายคอลัมน์ เป็นตารางหลายมิติที่มิติ หนึ่งเป็นมิติเกี่ยวกับเวลา อินเดกซ์ที่ใช้ตาม ชื่อคอลัมน์ ชื่อแถวหรือชื่อคอลัมน์ ที่เก็บข้อมูลสาหรับหนึ่ง ตาราง เครื่องเดียวกันและอยู่ใน ฮาร์ดดิกส์ หลายเครื่องและสามารถ เลือกได้ว่าจะเก็บไว้ที่ฮาร์ด ดิกส์หรือที่หน่วยความจา 6
  7. 7. โมเดลการเก็บข้อมูลของ BigTable BigTable เป็นแม็ปแบบจัดเรียงข้อมูล (sorted map) หลาย มิติซึ่งเก็บข้อมูลแบบกระจาย (distributed) แต่คงทน (persistent) แต่ละค่าที่เก็บในแม็ปจะถูกเข้าถึงโดยใช้คีย์ตามแถว (row key) คีย์ตามคอลัมน์ (column key) และการประทับเวลา (timestamp) ค่าที่ถูกเก็บเป็นอาร์เรย์ของไบต์ (row:string, column:string, time:int64) → string 7
  8. 8. ตัวอย่างการเก็บข้อมูลเว็บใน BigTable 8 • ชื่อของแถวจะเป็นชื่อที่อยู่ของเว็บโดยที่ชื่อโดเมนจะขึ้นมาก่อนเพื่อให้ชื่อ URL ที่มีโดเมน ที่อยู่ที่เดียวกันอยู่ติดกันหรือใกล้เคียงกัน • คอลัมน์ contents: จะเป็นเว็บเพจใน www.cnn.com โดยที่จะมี เวอร์ชันที่เก็บในเวลา t3, t5, และ t6 • คอลัมน์ anchor:* เก็บข้อความที่อ้างอิงถึงเว็บเพจ เช่น ที่เว็บ cnnsi.com มีการอ้างอิง ถึงเว็บเพจใน www.cnn.com ด้วยข้อความ “CNN” ในเวลา t9 และที่เว็บ my.look.ca มีการอ้างอิงถึงเว็บเพจใน www.cnn.com ด้วย ข้อความ “CNN.com” ในเวลา t8
  9. 9. แถวของตาราง คีย์ของแถว (row keys) จะเก็บเป็น string ความยาวได้ สูงสุดถึง 64KB (โดยปกติจะยาว 10-100 Bytes) การจัดเรียงข้อมูลในตารางของ BigTable จะจัดเรียงตาม คีย์ของแถวหรือชื่อของแถว แต่ละช่วงหรือกลุ่มของแถว (row range) จะเรียกว่า tablet ซึ่งเป็นหน่วยเพื่อใช้ในการกระจายข้อมูลและโหลด (load balancing) 9
  10. 10. ครอบครัวคอลัมน์ (Column Families) คีย์ของคอลัมน์จะถูกจัดกลุ่มให้อยู่ในเซ็ตเดียวกันที่เรียกว่า ครอบครัวคอลัมน์ (Column Families) ข้อมูลที่อยู่ในครอบครัวคอลัมน์เดียวกันมีชนิดข้อมูล เหมือนกัน จะมีจานวนครอบครัวคอลัมน์ได้มากที่สุดในระดับร้อย เท่านั้นและมักไม่ค่อยเปลี่ยน แต่ไม่มีการจากัดจานวนคอลัมน์ในตาราง 10
  11. 11. การใช้ครอบครัวคอลัมน์ ครอบครัวคอลัมน์จะเป็นข้อมูลที่ใช้ในสิ่งต่อไปนี้ – การจัดการระดับของการเข้าถึงข้อมูล (access control) – การคิดค่าบริการสาหรับการใช้ดิสก์และการใช้หน่วยความจา (disk and memory accounting) รองรับแอปพลิเคชันที่หลากหลาย – บางแอปพลิเคชันมีการเพิ่ม base data – บางแอปพลิเคชันอ่าน base data แล้วสร้างคอลัมน์เพิ่ม – บางแอปพลิเคชันอนุญาตให้อ่านข้อมูลเท่านั้น 11
  12. 12. คีย์ของคอลัมน์ (Column Key) คีย์ของคอลัมน์จะอยู่ในรูปแบบ family:qualifier ในกรณีของการเก็บเว็บเพจ – ตัวอย่างของชื่อ column family คือ anchor ซึ่งเป็น จุดอ้างอิงเว็บเพจ – ตัวอย่างของ qualifier คือชื่อของเว็บไซต์ที่อ้างอิงเว็บ เพจที่ถูกเก็บ – เนื้อหาของข้อมูลทีเก็บคือข้อความที่สามารถถูกคลิกเพื่อ ไปยังลิงก์ของเว็บเพจที่ถูกเก็บ 12
  13. 13. การประทับเวลา (Timestamps) ในแต่ละช่องของ BigTable สามารถมีข้อมูลได้หลาย เวอร์ชันซึ่งแต่ละเวอร์ชันถูกอินเดกซ์ด้วยการประทับเวลา ชนิดของข้อมูลที่ใช้ในการประทับเวลาใน BigTable คือ 64- bit integers เวลาที่แสดงสามารถมีรายละเอียดในระดับ microseconds 13
  14. 14. ตัวอย่างโค้ดในการเขียนข้อมูลที่ BigTable // Open the table Table *T = OpenOrDie(“/bigtable/web/webtable”); // Write a new anchor and delete an old anchor RowMutation r1(T, “com.cnn.www”); r1.Set(“anchor:www.c-span.org”, “CNN”); r1.Delete(“anchor:www.abc.com”); Operation op; Apply(&op, &r1); 14
  15. 15. ตัวอย่างโค้ดในการอ่านข้อมูลที่ BigTable Scanner scanner(T); ScanStream *stream; stream = scanner.FetchColumnFamily(“anchor”); stream->setReturnAllVersions(); scanner.Lookup(“com.cnn.www”); for (; !stream->Done(); stream->Next()) { printf(“%s %s %11d %sn”, scanner.RowName(), stream->ColumnName(), stream->MicroTimestamp(), stream->Value()); } 15
  16. 16. รูปแบบไฟล์ที่เก็บข้อมูล BigTable ใช้ Google File System ในการเก็บไฟล์ล็อก (log files) และไฟล์ข้อมูล (data files) Google SSTable เป็นรูปแบบไฟล์ที่ใช้ในการเก็บข้อมูล BigTable SSTable 1 อันจะเป็นการแม็ปจากคีย์ (keys) ไปยังค่า ข้อมูล (values) ที่เก็บโดยที่ทั้งคีย์และค่าข้อมูลเป็นสตริงที่มี ความยาวเท่าไหร่ก็ได้ 16
  17. 17. ความเชื่อมโยงในการเก็บข้อมูล  โครงสร้างของ BigTable จะประกอบด้วย 3 ส่วนหลัก – ไลบรารีที่ลิงก์กับไคลเอนต์ที่เก็บและค้นหาข้อมูล – เซิร์ฟเวอร์หลัก 1 ตัว (one master server) – เซิร์ฟเวอร์แท็บเบล็กหลายตัว (many tablet servers)  แท็บเบล็กเซิร์ฟเวอร์หลายตัวสามารถถูกเพิ่มหรือเอาออก จากคลัสเตอร์ได้ตามการเปลี่ยนแปลงของภาระงาน (workload) 17
  18. 18. หน้าที่ของเซิร์ฟเวอร์หลัก กาหนดว่าแท็บเบล็กไหนจะในอยู่ในแท็บเบล็กเซิร์ฟเวอร์ใด ทาให้เกิดความสดุลในการทางานของแท็บเบล็กเซิร์ฟเวอร์ ขอพื้นที่หน่วยความจาของไฟล์ที่ไม่ได้ใช้แล้ว จัดการการเปลี่ยนแปลงของสกีม่าของตารางและครอบครัว คอลัมน์ 18
  19. 19. หน้าที่ของแท็บเบล็กเซิร์ฟเวอร์ จัดการกลุ่มของแท็บเบล็กตั้งแต่สิบตัวถึงพันตัวต่อแท็บ เบล็กเซิร์ฟเวอร์ จัดการการอ่านและเขียนข้อมูลไปยังแท็บเบล็กและแยก แท็บเบล็กที่ใหญ่เกินไปออกเป็นหลายตัว ไคลเอนต์จะทาการสื่อสารโดยตรงกับแท็บเบล็กเซิร์ฟเวอร์ เพื่อจะร้องขอให้อ่านหรือเขียนข้อมูล ทาให้ในทางปฏิบัติ ภาระงานของเซิร์ฟเวอร์หลักมีไม่มาก 19
  20. 20. สรุปโครงสร้างการเก็บข้อมูล หนึ่ง BigTable คลัสเตอร์ (A BigTable cluster) จะประกอบไป ด้วยหลายตาราง (table) แต่ละตารางประกอบด้วยแท็บเบล็ก แต่ละแท็บเบล็กประกอบด้วยข้อมูลที่มีความสัมพันธ์และอยู่ ในช่วงแถวเดียวกัน (row range) ตอนแรก ตารางจะมีเพียงแค่หนึ่งแท็บเบล็ก ต่อมาเมื่อตารางใหญ่ ขึ้นตารางก็จะแยกออกมาเป็นหลายแท็บเบล็ก โดยปกติ 1 แท็บเบล็กจะมีขนาดข้อมูลประมาณ 100-200 MB 20
  21. 21. การประเมินประสิทธิภาพ การทดลองนั้นทากับหนึ่ง BigTable คลัสเตอร์ที่ ประกอบด้วย N แท็บเบล็กเซิร์ฟเวอร์ – มีวัตถุประสงค์เพื่อที่จะวัดประสิทธิภาพ (performance) และการปรับขนาดได้ตามภาระงาน (scalability) ของ BigTable ตามจานวนแท็บเบล็กเซิร์ฟเวอร์ที่เพิ่มขึ้น ทดสอบกับเครื่องคอมพิวเตอร์ทั้งหมด 1786 เครื่องโดยที่ แต่ละเครื่องมีฮาร์ดดิกส์ 400 GB และมี CPU dual-core 2 GHz 21
  22. 22. จานวนของโอเปอเรชันต่อวินาทีต่อ แท็บเบล็กเซิร์ฟเวอร์ 22
  23. 23. ผลการสรุปและวิเคราะห์ การอ่านข้อมูลแบบสุ่มใช้เวลามากที่สุดเนื่องจากต้องถ่าย โอนข้อมูล 64 KB SSTable ผ่านเครือข่ายจาก GFS ไปยัง แท็บเบล็กเซิร์ฟเวอร์ การเขียนข้อมูลแบบสุ่มหรือแบบตามลาดับใช้เวลาน้อยกว่า การอ่านข้อมูลแบบสุ่มเพราะแต่ละแท็บเบล็กเซิร์ฟเวอร์เอา สิ่งที่เขียนใส่ลงไปในล็อกเดียวกันและใช้การยืนยันการเขียน (commit) แบบกลุ่ม 23
  24. 24. จานวนโอเปอเรชันต่อวินาที 24
  25. 25. ผลสรุปและวิเคราะห์ จานวนโอเปอเรชันที่ทาเพิ่มตามจานวนแท็บเบล็ก เซิร์ฟเวอร์แต่ไม่ได้เพิ่มแบบเชิงเส้นซึ่งมีสาเหตุมาจาก – การไม่สามารถทาให้ภาระงานของหลายเซิร์ฟเวอร์เกิด ความสมดุลซึ่งส่วนหนึ่งมาจากการใช้ CPU และ เครือข่ายของโปรเซสอื่น – การปรับเปลี่ยนภาระงานเพื่อทาให้เกิดความสมดุลนั้น จะต้องใช้เวลาซึ่งอาจจะไม่ทันเวลาที่ภาระงานเปลี่ยนไป 25
  26. 26. ข้อจากัดของ BigTable  BigTable มีข้อจากัดในเรื่องของการไม่สนับสนุนคาสั่งสอบถาม (query) บางประเภท เช่น – การเปรียบเทียบข้อมูลที่ใช้เครื่องหมายไม่เท่ากันนั้น ในคาสั่ง สอบถามหนึ่งใช้ได้เฉพาะการเปรียบเทียบข้อมูลชนิดเดียว เท่านั้น – ตัวอย่างคาสั่งสอบถามที่ทาไม่ได้ SELECT * FROM Person WHERE birth_year >= :min_year AND height >= :min_height # ERROR 26
  27. 27. หัวข้อที่จะพูด BigTable Google App Engine 27
  28. 28. Google App Engine คืออะไร Google App Engine คือการบริการที่ทาให้ผู้ใช้สามารถ พัฒนาเว็บแอปพลิเคชันโดยใช้เซิร์ฟเวอร์ของกูเกิลซึ่งเป็น เซิร์ฟเวอร์เดียวกับที่ใช้การรันแอปพลิเคชันต่างๆ ของกูเกิล ผู้ใช้บริการจ่ายค่าบริการเฉพาะเท่าที่ใช้จริงและสามารถ กาหนดว่าต้องการจะใช้มากเพียงใดด้วยตนเอง ทุกแอปพลิเคชันสามารถใช้ได้ฟรีตราบใดที่ใช้พื้นที่ไม่เกิน 500 MB และมีจานวนการเข้าเยี่ยมชมไม่เกิน 5 ล้านเพจต่อ เดือน 28
  29. 29. ข้อดีของ Google App Engine  ผู้ใช้บริการไม่ต้องติดตั้งหรือซ่อมบารุงดูแลรักษาซอฟต์แวร์และ ฮาร์ดแวร์ที่จาเป็นต้องมีเพื่อรันแอปพลิเคชัน ผู้ใช้บริการไม่ต้องกังวลว่าจะต้องทาอย่างไรบ้างเพื่อรองรับการ ขยายภาระงานที่เพิ่มขึ้นจากการใช้เว็บแอปพลิเคชันมากขึ้นโดยที่ กูเกิลให้บริการโดยใช้เทคโนโลยี Cloud Computing ผู้ใช้บริการสามารถกาหนดโดเมนของเว็บแอปพลิเคชันของตน การพัฒนาแอปพลิเคชันทาได้ง่ายมาก และสามารถทาได้ใน 2 สภาพแวดล้อมคือ Java และ Python 29
  30. 30. ข้อเสียของการใช้ Google App Engine ข้อมูลที่เป็นความลับขององค์กรไม่ได้อยู่ในเซิร์ฟเวอร์ที่ องค์กรสามารถบังคับควบคุมได้ มีข้อจากัดในเรื่องของการใช้บางภาษาเช่น VB, C#, และ PHP มีความเสี่ยงในการพัฒนาเว็บแอปพลิเคชันเพราะกูเกิลไม่ เคยรับประกันความเสี่ยงหรือรับประกันว่าจะให้บริการ อย่างดีตลอดไป 30
  31. 31. แนวทางการพัฒนาเว็บ 31
  32. 32. สถาปัตยกรรมของ Google App Engine 32
  33. 33. Google App Engine ในฐานะ Application Server 33
  34. 34. การพัฒนาเว็บแอปพลิเคชันบน GAE โดยใช้ Python  ดาวน์โหลดและติดตั้งเครื่องมือที่ใช้ในการพัฒนา เรียนรู้การใช้เฟรมเวิร์ค webapp เรียนรู้การใช้ Users Service การจัดการฟอร์มโดยใช้ webapp การใช้ Datastore การใช้ Templates การใช้ Static Files การอัปโหลด Application 34
  35. 35. App Engine Python SDK เราสามารถพัฒนาและอัปโหลดแอปพลิเคชัน Python สาหรับ Google App Engine โดยใช้ App Engine Python software development kit (SDK) The Python SDK สามารถทางานบนเครื่องคอมพิวเตอร์ที่ มี Python 2.5 บนระบบปฏิบัติการ Windows, Mac OS X และ Linux – ยังไม่สามารถทางานได้กับ Python 3 35
  36. 36. การดาวน์โหลด Python SDK ให้ไปที่ http://code.google.com/appengine/downloads.html เลือกGoogle App Engine SDK for Python เลือกดาวน์โหลดตามแพลตฟอร์มที่ใช้ 36
  37. 37. การพัฒนา Hello World Application  แตกไฟล์ google_appengine_1.3.8.zip  สร้างตัวจัดการการร้องขอแบบง่าย (Creating a Simple Request Handler) สร้างไฟล์กาหนดค่า (Creating a Configuration File) ทดสอบแอปพลิเคชัน (Testing the application) 37
  38. 38. สร้างตัวจัดการการร้องขอแบบง่าย  สร้างไดเรกทอรี helloworld ภายใต้ไดเรกทอรี google_appengine สร้างไฟล์ helloworld.py ในไดเรกทอรี โดยที่เนื้อหาในไฟล์มีดังนี้ 38 ไฟล์นี้จะตอบสนองการร้องขอโดยการแสดงบรรทัดว่างและข้อความ “Hello, world!”
  39. 39. สร้างไฟล์ Configuration แอปพลิเคชัน App Engine มีไฟล์ configuration ที่ชื่อว่าapp.yaml ไฟล์นี้อธิบายเกี่ยวกับสคริปต์ที่จะถูกเรียกเพื่อตอบสนอง URLs สร้างไฟล์ app.yaml ซึ่งมีเนื้อหาดังต่อไปนี้ 39
  40. 40. ทดสอบแอปพลิเคชัน  สั่งให้เว็บเซิร์ฟเวอร์เริ่มทางานโดยการใช้คาสั่ง dev_appserver.py ทดสอบแอปพลิเคชันโดยเปิดเบราว์เซอร์ที่ http://localhost:8080 40
  41. 41. การใช้เฟรมเวิร์ก หากผู้พัฒนาแอปพลิเคชันจะต้องเขียนโค้ดเยอะมากด้วย ตนเอง ก็จะทาให้การพัฒนาแอปพลิเคชันเป็นไปช้าและมี โอกาสมีข้อผิดพลาดเยอะ Google App Engine สนับสนุนการใช้เฟรมเวิร์กซึ่งเขียน โดยใช้ Python และสนับสนุนการติดต่อแบบ CGI หลายตัว อาทิเช่น Django, CherryPy, Pylons, and web.py Google App Engine มีเว็บแอปพลิเคชันเฟรมเวิร์กแบบง่าย ที่เรียกว่า webapp 41
  42. 42. การใช้เฟรมเวิร์ก webapp แอปพลิเคชัน webapp มี 3 ส่วน – อย่างน้อยหนึ่ง RequestHandler คลาสที่ประมวลผลการ ร้องขอและการสร้างการตอบรับ – อินสแตนท์ WSGIApplication ซึ่งเชื่อมโยงระหว่างการ ร้องขอที่เข้ามาและตัวจัดการโดยดูที่ URL – เมธอดหลักที่รัน WSGIApplication โดยใช้ CGI adaptor 42
  43. 43. ลงทะเบียนแอปพลิเคชัน ไปที่ https://appengine.google.com/  กูเกิลจะให้กรอกข้อมูลของแอปพลิเคชันและเบอร์ โทรศัพท์เพื่อจะได้รับโค้ดยืนยันทาง SMS  จากนั้น ผู้ใช้กรอกโค้ดที่ได้รับทาง SMS  เปลี่ยนแปลงแก้ไขไฟล์ app.yaml เพื่อแก้ไขชื่อของแอป พลิเคชันตามที่กรอกในแบบฟอร์ม 43
  44. 44. แก้ไขไฟล์ app.yaml 44 แก้ไขไฟล์ app.yaml โดยที่แก้ไขชื่อ application
  45. 45. ทาการอัปโหลดขึ้นเว็บ appspot.com 45 ใช้สคริปต์ appcfg.py และคาสั่ง update ในการอัปโหลดขึนเว็บ
  46. 46. เว็บแอปพลิเคชันที่อัปโหลดและลงทะเบียนแล้ว 46
  47. 47. สรุป  Google App Engine เป็นการบริการที่ให้ผู้ใช้พัฒนาแอป พลิเคชันบนแพลตฟอร์มของ Google ที่มีความสามารถ ปรับขนาดได้ (scalability) โดยใช้เทคโนโลยี cloud computing และมีความปลอดภัยสูง (security) Google App Engine ใช้ Bigtable และ Google File System ในการเก็บและค้นหาข้อมูล  Google App Engine ใช้งานได้ง่าย 47
  48. 48. แหล่งข้อมูลอ้างอิง http://labs.google.com/papers/bigtable.html http://www.isriya.com/node/1896/bigtable-and- chubby-lock-service http://www.thaijavadev.com/index.php?option=com_c ontent&view=section&layout=blog&id=15&Itemid=11 2 48
  49. 49. ขอขอบคุณ http://twitter.com/krunapon http://www.slideshare.net/krunapon http://gear.kku.ac.th/~krunapon krunapon@kku.ac.th 49

×