Mais conteúdo relacionado Semelhante a Google bigtableappengine (20) Mais de Kanda Runapongsa Saikaew (20) Google bigtableappengine1. Google Big Table and App Engine
ผศ. ดร. กานดา รุณนะพงศา สายแก้ว
ภาควิชาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น
http://twitter.com/krunapon
1
3. BigTable คืออะไร
BigTable คือระบบการเก็บข้อมูลแบบกระจายตามเซิร์ฟเวอร์นับ
พันตัวที่กูเกิลออกแบบเพื่อเก็บข้อมูลขนาดใหญ่ระดับ Perabytes
(10^15 หรือ 2^50 bytes) ได้
BigTable เป็นระบบที่ได้รับการพิสูจน์แล้วว่า
– สามารถเก็บข้อมูลจานวนมากและค้นหาข้อมูลขนาดใหญ่ได้
อย่างรวดเร็ว
– มีความยืดหยุ่นในการเก็บข้อมูลที่มีความหลากหลาย (URLs,
เว็บเพจ, และรูปภาพถ่ายทางดาวเทียม)
3
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
6. Traditional RDBMSs vs. BigTable
คุณลักษณะ Traditional
RDBMSs
BigTable
โมเดลการเก็บข้อมูล เป็นตาราง 2 มิติที่มีได้
หลายแถว แต่ละแถวมีได้
หลายคอลัมน์
เป็นตารางหลายมิติที่มิติ
หนึ่งเป็นมิติเกี่ยวกับเวลา
อินเดกซ์ที่ใช้ตาม ชื่อคอลัมน์ ชื่อแถวหรือชื่อคอลัมน์
ที่เก็บข้อมูลสาหรับหนึ่ง
ตาราง
เครื่องเดียวกันและอยู่ใน
ฮาร์ดดิกส์
หลายเครื่องและสามารถ
เลือกได้ว่าจะเก็บไว้ที่ฮาร์ด
ดิกส์หรือที่หน่วยความจา
6
7. โมเดลการเก็บข้อมูลของ BigTable
BigTable เป็นแม็ปแบบจัดเรียงข้อมูล (sorted map) หลาย
มิติซึ่งเก็บข้อมูลแบบกระจาย (distributed) แต่คงทน
(persistent)
แต่ละค่าที่เก็บในแม็ปจะถูกเข้าถึงโดยใช้คีย์ตามแถว (row
key) คีย์ตามคอลัมน์ (column key) และการประทับเวลา
(timestamp)
ค่าที่ถูกเก็บเป็นอาร์เรย์ของไบต์
(row:string, column:string, time:int64) → string 7
9. แถวของตาราง
คีย์ของแถว (row keys) จะเก็บเป็น string ความยาวได้
สูงสุดถึง 64KB (โดยปกติจะยาว 10-100 Bytes)
การจัดเรียงข้อมูลในตารางของ BigTable จะจัดเรียงตาม
คีย์ของแถวหรือชื่อของแถว
แต่ละช่วงหรือกลุ่มของแถว (row range) จะเรียกว่า tablet
ซึ่งเป็นหน่วยเพื่อใช้ในการกระจายข้อมูลและโหลด (load
balancing)
9
12. คีย์ของคอลัมน์ (Column Key)
คีย์ของคอลัมน์จะอยู่ในรูปแบบ family:qualifier
ในกรณีของการเก็บเว็บเพจ
– ตัวอย่างของชื่อ column family คือ anchor ซึ่งเป็น
จุดอ้างอิงเว็บเพจ
– ตัวอย่างของ qualifier คือชื่อของเว็บไซต์ที่อ้างอิงเว็บ
เพจที่ถูกเก็บ
– เนื้อหาของข้อมูลทีเก็บคือข้อความที่สามารถถูกคลิกเพื่อ
ไปยังลิงก์ของเว็บเพจที่ถูกเก็บ 12
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
16. รูปแบบไฟล์ที่เก็บข้อมูล
BigTable ใช้ Google File System ในการเก็บไฟล์ล็อก (log
files) และไฟล์ข้อมูล (data files)
Google SSTable เป็นรูปแบบไฟล์ที่ใช้ในการเก็บข้อมูล
BigTable
SSTable 1 อันจะเป็นการแม็ปจากคีย์ (keys) ไปยังค่า
ข้อมูล (values) ที่เก็บโดยที่ทั้งคีย์และค่าข้อมูลเป็นสตริงที่มี
ความยาวเท่าไหร่ก็ได้
16
17. ความเชื่อมโยงในการเก็บข้อมูล
โครงสร้างของ BigTable จะประกอบด้วย 3 ส่วนหลัก
– ไลบรารีที่ลิงก์กับไคลเอนต์ที่เก็บและค้นหาข้อมูล
– เซิร์ฟเวอร์หลัก 1 ตัว (one master server)
– เซิร์ฟเวอร์แท็บเบล็กหลายตัว (many tablet servers)
แท็บเบล็กเซิร์ฟเวอร์หลายตัวสามารถถูกเพิ่มหรือเอาออก
จากคลัสเตอร์ได้ตามการเปลี่ยนแปลงของภาระงาน
(workload)
17
20. สรุปโครงสร้างการเก็บข้อมูล
หนึ่ง BigTable คลัสเตอร์ (A BigTable cluster) จะประกอบไป
ด้วยหลายตาราง (table)
แต่ละตารางประกอบด้วยแท็บเบล็ก
แต่ละแท็บเบล็กประกอบด้วยข้อมูลที่มีความสัมพันธ์และอยู่
ในช่วงแถวเดียวกัน (row range)
ตอนแรก ตารางจะมีเพียงแค่หนึ่งแท็บเบล็ก ต่อมาเมื่อตารางใหญ่
ขึ้นตารางก็จะแยกออกมาเป็นหลายแท็บเบล็ก
โดยปกติ 1 แท็บเบล็กจะมีขนาดข้อมูลประมาณ 100-200 MB
20
26. ข้อจากัดของ BigTable
BigTable มีข้อจากัดในเรื่องของการไม่สนับสนุนคาสั่งสอบถาม
(query) บางประเภท เช่น
– การเปรียบเทียบข้อมูลที่ใช้เครื่องหมายไม่เท่ากันนั้น ในคาสั่ง
สอบถามหนึ่งใช้ได้เฉพาะการเปรียบเทียบข้อมูลชนิดเดียว
เท่านั้น
– ตัวอย่างคาสั่งสอบถามที่ทาไม่ได้
SELECT * FROM Person WHERE birth_year >= :min_year
AND height >= :min_height # ERROR
26
28. Google App Engine คืออะไร
Google App Engine คือการบริการที่ทาให้ผู้ใช้สามารถ
พัฒนาเว็บแอปพลิเคชันโดยใช้เซิร์ฟเวอร์ของกูเกิลซึ่งเป็น
เซิร์ฟเวอร์เดียวกับที่ใช้การรันแอปพลิเคชันต่างๆ ของกูเกิล
ผู้ใช้บริการจ่ายค่าบริการเฉพาะเท่าที่ใช้จริงและสามารถ
กาหนดว่าต้องการจะใช้มากเพียงใดด้วยตนเอง
ทุกแอปพลิเคชันสามารถใช้ได้ฟรีตราบใดที่ใช้พื้นที่ไม่เกิน
500 MB และมีจานวนการเข้าเยี่ยมชมไม่เกิน 5 ล้านเพจต่อ
เดือน 28
29. ข้อดีของ Google App Engine
ผู้ใช้บริการไม่ต้องติดตั้งหรือซ่อมบารุงดูแลรักษาซอฟต์แวร์และ
ฮาร์ดแวร์ที่จาเป็นต้องมีเพื่อรันแอปพลิเคชัน
ผู้ใช้บริการไม่ต้องกังวลว่าจะต้องทาอย่างไรบ้างเพื่อรองรับการ
ขยายภาระงานที่เพิ่มขึ้นจากการใช้เว็บแอปพลิเคชันมากขึ้นโดยที่
กูเกิลให้บริการโดยใช้เทคโนโลยี Cloud Computing
ผู้ใช้บริการสามารถกาหนดโดเมนของเว็บแอปพลิเคชันของตน
การพัฒนาแอปพลิเคชันทาได้ง่ายมาก และสามารถทาได้ใน 2
สภาพแวดล้อมคือ Java และ Python
29
30. ข้อเสียของการใช้ Google App Engine
ข้อมูลที่เป็นความลับขององค์กรไม่ได้อยู่ในเซิร์ฟเวอร์ที่
องค์กรสามารถบังคับควบคุมได้
มีข้อจากัดในเรื่องของการใช้บางภาษาเช่น VB, C#, และ
PHP
มีความเสี่ยงในการพัฒนาเว็บแอปพลิเคชันเพราะกูเกิลไม่
เคยรับประกันความเสี่ยงหรือรับประกันว่าจะให้บริการ
อย่างดีตลอดไป
30
34. การพัฒนาเว็บแอปพลิเคชันบน GAE
โดยใช้ Python
ดาวน์โหลดและติดตั้งเครื่องมือที่ใช้ในการพัฒนา
เรียนรู้การใช้เฟรมเวิร์ค webapp
เรียนรู้การใช้ Users Service
การจัดการฟอร์มโดยใช้ webapp
การใช้ Datastore
การใช้ Templates
การใช้ Static Files
การอัปโหลด Application 34
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
37. การพัฒนา Hello World Application
แตกไฟล์ google_appengine_1.3.8.zip
สร้างตัวจัดการการร้องขอแบบง่าย (Creating a Simple
Request Handler)
สร้างไฟล์กาหนดค่า (Creating a Configuration File)
ทดสอบแอปพลิเคชัน (Testing the application)
37
39. สร้างไฟล์ Configuration
แอปพลิเคชัน App Engine มีไฟล์ configuration ที่ชื่อว่าapp.yaml
ไฟล์นี้อธิบายเกี่ยวกับสคริปต์ที่จะถูกเรียกเพื่อตอบสนอง URLs
สร้างไฟล์ app.yaml ซึ่งมีเนื้อหาดังต่อไปนี้
39
42. การใช้เฟรมเวิร์ก webapp
แอปพลิเคชัน webapp มี 3 ส่วน
– อย่างน้อยหนึ่ง RequestHandler คลาสที่ประมวลผลการ
ร้องขอและการสร้างการตอบรับ
– อินสแตนท์ WSGIApplication ซึ่งเชื่อมโยงระหว่างการ
ร้องขอที่เข้ามาและตัวจัดการโดยดูที่ URL
– เมธอดหลักที่รัน WSGIApplication โดยใช้ CGI
adaptor
42
47. สรุป
Google App Engine เป็นการบริการที่ให้ผู้ใช้พัฒนาแอป
พลิเคชันบนแพลตฟอร์มของ Google ที่มีความสามารถ
ปรับขนาดได้ (scalability) โดยใช้เทคโนโลยี cloud
computing และมีความปลอดภัยสูง (security)
Google App Engine ใช้ Bigtable และ Google File System
ในการเก็บและค้นหาข้อมูล
Google App Engine ใช้งานได้ง่าย
47