Tags:
Node Thumbnail

กระแสระบบฐานข้อมูล NoSQL ทำให้หลายบริษัทพยายามปรับฐานข้อมูลไปมากในช่วงไม่กี่ปีที่ผ่านมา กูเกิลเองในระบบ Google App Engine ก็ใช้ GQL ที่แม้จะคล้าย SQL แต่ก็ไม่สามารถ join ข้ามตารางได้ แต่ในระบบที่เกี่ยวกับการเงินและมีรายการตัดเงินจำนวนมากอย่าง AdWords ก็ทำให้กูเกิลต้องกลับมาพัฒนาระบบ SQL

ระบบ F1 มีเงื่อนไขการออกแบบว่าต้องกระจายโหลดได้แบบเดียวกับ NoSQL ขณะเดียวกันก็ต้องรองรับ ACID เพื่อจะรับประกันได้ว่าการตัดยอดเงินจะแม่นยำ และเนื่องจากผู้ใช้เป็นผู้ใช้ทางฝั่งธุรกิจจึงจำเป็นต้องรองรับ SQL เต็มรูปแบบ

F1 กระจายข้อมูลข้ามศูนย์ข้อมูลได้ โดยตัวกระจายโหลดจะเลือกให้ว่าจะเชื่อมต่อเข้าศูนย์ข้อมูลใด ขณะที่แต่ละศูนย์จะมีเซิร์ฟเวอร์หลายตัว แบ่งงานกันทำ ระบบการเก็บข้อมูลนั้นเก็บผ่านระบบเก็บข้อมูล Spanner ที่รับประกันเรื่องของการสำรองข้อมูล และการกระจายข้อมูล

จุดแปลกอย่างหนึ่งของ F1 คือการเก็บข้อมูลภายในนั้นเป็นเชิงโครสร้าง (hierarchical) แทนที่จะเชื่อมโยงความสัมพันธ์ระหว่างตารางด้วยหมายเลขประจำแถวของตารางต่างๆ กระบวนการ join ในตารางที่อยู่ในโครงสร้างเดียวกันจึงมีประสิทธิภาพที่ดีกว่ามาก

กูเกิลเคยพูดถึง F1 มาตั้งแต่ปีที่แล้ว แต่ในปีนี้เพิ่งตีพิมพ์รายงานการออกแบบเพิ่มเติมเพื่อนำเสนอที่งาน Very Large Database (VLDB) 2013

ที่มา - The Register, F1: A Distributed SQL Database That Scales (PDF)

Get latest news from Blognone

Comments

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 30 August 2013 - 12:51 #617558
PaPaSEK's picture

Big data ยังมึนอยู่เลย VLDB มาอีกแล้ว (ถึงจะเป็น subset ของ Big data ก็เหอะ)

By: nextman13
AndroidBlackberryUbuntuWindows
on 30 August 2013 - 13:37 #617578

ชอบแนว NoSQL มากแต่ก็จะยังศึกษาไม่ลึกซึ้งมากนัก เพราะวิธีการใช้งงสุดๆครับ ไม่รู้ว่าจะเอามาแทนพวก mysql ได้หรือเปล่าครับ

By: Architec
ContributorWindows PhoneAndroidWindows
on 30 August 2013 - 13:56 #617587 Reply to:617578

แทนได้เฉพาะบางงานครับ แต่พวกที่เกี่ยวข้องกับเงินๆทองๆยังไงผมก็ต้องเอาพวก RDB ไว้ก่อน

ตอนนี้สนใจ In-Memory DB มากกว่า เพราะไม่ต้องเปลืองสมองไปกับ Learning Curve ที่ชันโคตรๆ

By: toooooooon
iPhoneWindows PhoneAndroidBlackberry
on 30 August 2013 - 14:13 #617591 Reply to:617587

+1024

งานที่ต้องการพลังประมวล+ความเร็ว ผมก็เอาลง Mem เหมือนกัน
เดี่ยวนี้ Mem ถูก จัดขนาด 32-64 GB User ยอมจ่าย มากกว่าจะต้องมาเรียนรุ้ + เปลี่ยน Engine

อย่างน้อย ๆ ก้ยืด Apps ไปได้ อีกสองสามปี

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 30 August 2013 - 14:36 #617598 Reply to:617587
PaPaSEK's picture

แต่พวกที่เกี่ยวข้องกับเงินๆทองๆยังไงผมก็ต้องเอาพวก RDB ไว้ก่อน

เพราะอะไรหรือครับ พอดีผมไม่รู้เรื่อง NoSQL เลยไม่เข้าใจครับ

By: ryudia
AndroidWindows
on 30 August 2013 - 14:51 #617601 Reply to:617598
ryudia's picture

น่าจะเรื่อง transaction รึเปล่า

By: Architec
ContributorWindows PhoneAndroidWindows
on 30 August 2013 - 14:56 #617602 Reply to:617601

ถูกต้องครับ พวก Transaction มันจำเป็นมาก แต่ NoSQL บางเจ้าก็น่าจะมีแล้วมั๊ง แต่ก็ไม่อยากทำอยู่ดี เพราะเวลาแก้ไขจะแหกตาอ่านยังยากเลย แบบนี้ขอพบกันครึ่งทาง --> In-Memory ดีสุดๆสำหรับผม(และคนที่จะมาทำต่อด้วย)

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 30 August 2013 - 15:46 #617625 Reply to:617602
PaPaSEK's picture

transaction นี่หมายถึง transaction ที่มี rollback, commit ใช่มั้ยครับ

แล้ว In-memory ตัวไหนที่น่าสนใจครับ

ขออภัย ถามเยอะหน่อยครับ สนใจแต่ขอย่นระยะเวลาจากประสบการณ์คนอื่นละกัน

By: Architec
ContributorWindows PhoneAndroidWindows
on 30 August 2013 - 16:04 #617638 Reply to:617625

ที่ผมสนใจอยู่ตอนนี้คือ SQL Server 2014 ครับ (ยังเป็น CTP1 อยู่) แต่ถ้าเป็น MySQL ที่ดังๆก็ MemSQL ตัวนี้แพงมาก

*อยากลองครับแต่ช่วงนี้ไม่มีเวลา งานล้นมือครับ

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 30 August 2013 - 16:06 #617639 Reply to:617638
PaPaSEK's picture

สอบถามต่ออีกหน่อย งานที่ใช้เป็นจำพวกไหนครับ

อย่างของผมนี่สนใจเอาไปทำระบบสินค้าคงคลังครับ

By: Architec
ContributorWindows PhoneAndroidWindows
on 30 August 2013 - 16:24 #617642 Reply to:617639

สำหรับผมเป็นงานธุรกรรมแบบเน้น Realtime ครับ โดยมากจะเป็น Data ที่สัมพันธ์กับ Record อื่นๆใน Table ตัวเอง (NoSQL รับงานนี้ได้ แต่ไม่เหมาะกับงานธุรกรรม)

แต่ทั้งนี้ทั้งนั้น บาง Table โดนเรียกใช้งานหนัก - หนักชิหาย วิธีดั้งเดิมที่ผมโคตรเสี่ยงคือย้าย data ที่มีความเสี่ยงต่ำๆแต่เรียกใช้บ่อยๆ ไปไว้บนแรมครับ

เยอะไปเดี๋ยวโดนนายด่าครัฟ = =

By: PaPaSEK
ContributorAndroidWindowsIn Love
on 30 August 2013 - 17:25 #617669 Reply to:617642
PaPaSEK's picture

ขอบคุณครับ

By: nextman13
AndroidBlackberryUbuntuWindows
on 30 August 2013 - 18:56 #617694 Reply to:617587

ขอบคุณมากครับ

By: panurat2000
ContributorSymbianUbuntuIn Love
on 31 August 2013 - 12:39 #617873
panurat2000's picture

จุดแปลกอย่างหนึ่งของ F1 คือการเก็บข้อมูลภายในนั้นเป็นเชิงโครสร้าง (hierarchical)

เชิงโครสร้าง ?

By: btoy
ContributorAndroidWindows
on 31 August 2013 - 22:49 #618012
btoy's picture

ตามไม่ทันจริงๆ พวกข้อมูลใหญ่ๆนี่


..: เรื่อยไป