ผมเคย tweets บ่นว่าทำไม FB มันรวนมากเลย
โพสไปแล้วเห็นบ้างไม่เห็นบ้าง
แล้วก็มีคนบอกว่าFacebook ไม่ใช้ฐานข้อมูลแบบ DBMS
แต่ไม่ลงรายละเอียด
ผมเลยสงสัย ว่าจริงหรือไม่ แล้วเค้าเก็บข้อมูลแบบไหน
แต่ช่วงหลังๆเนี่ย FB รวนมากๆเลยนะครับ
ไม่เห็น cool เหมือนที่บอกไว้ในหนังเลยนะเนี่ย ><
ลองดูข่าวนี้ครับ
ส่วนเรื่องที่ว่ารวนๆ ผมว่ามันปกติดีนะครับ ลองตรวจสอบดูว่า force https ไว้ใน account setting รึยัง
ไม่จริงครับ DBMS แปลว่า ระบบจัดการฐานข้อมูล ถ้ามีฐานข้อมูล มันต้องใช้ซักระบบแน่ๆ
เพียงแต่มันไม่ได้ใช้ DBMS ปกติ (ปกติก็เช่น RDB) รู้สึกว่า FB จะใช้ NoSQL
ส่วนตัวแล้วที่มันรวนบ่อยขึ้น เกี่ยวกับเน็ตบ้านของแต่ละคนมากกว่าครับ เพราะตอนนี้มันใช้ AJAX
Facebook นี่เจ้าพ่อ MySQL เลยนะครับ
Facebook Engineering
เอาจริงๆ มันก็ใช้กันทั้งหมดทุกอย่างเท่าที่ทำได้เลยอะ MySQL เป็น "Permanent Storage"
แล้วก็มี memcache ดักหน้า ใช้ hadoop / hive ทำ batch processing แล้วก็อย่างอื่นอีกเพียบ...
บางทีช่วงปรับปรุงระบบข้อมูลมันเลยขึ้นบ้างไม่ขึ้นบ้างก็มีครับ
Facebook เลิกใช้ MySQL มาใช้ Cassandra ตั้งนานแล้วครับ
นานที่ว่าคงไม่เกินเดือนครึ่งมั้งครับ ล่าสุด engineering ยังมาบอกเรื่อง backup data ใน mysql เมื่อวันที่ 1 มีนาคมที่ผ่านมานี่เอง
Hybrid Incremental MySQL Backup
สับสนกับ Twitter รึเปล่าอะท่าน
เข้าใจ (เอาเอง) ว่า อ่านแต่ระบบ message ตัวใหม่ของ facebook
เพราะตัวนั้น cassandra + hbase ทั้งยวง ไม่(เห็น)มี mysql เข้าไปเกี่ยว
แต่ facebook ไม่ได้มีแค่ message ไงครับ :)
เข้าใจว่าใช้อีกหลายส่วนนะครับ และก็มีอีกหลายส่วนใช้อย่างอื่น
จนผมไม่เห็นเลยว่ามันใช้ MySQL ตรงไหนบ้าง วานบอก
มองจากข้างนอกไม่เห็น ไม่ได้แปลว่าไม่ใช้นะครับ และถ้าไม่ใช้ คงไม่มีหน้า MySQL at Facebook แล้วคนรู้เค้าอาจจะบอกไม่ได้ด้วยนะครับ
เท่าที่ดูคร่าวๆ facebook engineering ยังเขียนเรื่อง mysql อยู่เรื่อยๆ มันก็ไม่มีเหตุผลที่ facebook จะไม่ใช้ mysql แล้วครับ
ขอบคุณครับทั้งสองท่าน เด๋วผมลองหาข้อมูลเพิ่ม
เวลาดูสาวชอบดูสาวขาวๆ Sex Sex เวลาดู Notebook ชอบแบบ"ถึกๆดำๆ"
Twitter : @Zerntrino
G+ : Zerntrino Plus
ใช้อะไรก็มีบั๊กได้ครับ ความเชื่อว่าใช้อะไรแล้วไม่รวนนี่เกิดมาจากการตลาดซะส่วนใหญ่
แต่ระบบระดับ Facebook การใช้ NoSQL ดูจะสมเหตุผลครับ เพราะข้อมูลระดับนี้ไม่ควรเอา table มา join กันบ่อยๆ อยู่แล้ว
lewcpe.com, @wasonliw
ผมก็เจอบักนะ อย่างเช่น ดูหน้า view feed บางทีเป็นข้อมูลเก่า แล้วข้อมูลใหม่มันหายไปไหนอะไรแบบนี้
โพสท์ไปแล้วไม่เห็นนี่มีอยู่สองอย่างนะครับ คือ ข้อมูลส่งไปไม่ถึงเลย กับส่งไปถึง แต่ว่าบางเครื่องยังไม่อัปเดท ถ้าแบบแรกก็คือหาย แบบที่สองคือต้องรอซักพัก เพราะว่าข้อมูลถูกเขียนอ่านหลายที่
ส่วนเรื่องรวน ผมเจอบ้างบางครั้ง แต่ก็แค่ notification งงๆ
+1 +Like
เวลาดูสาวชอบดูสาวขาวๆ Sex Sex เวลาดู Notebook ชอบแบบ"ถึกๆดำๆ"
Twitter : @Zerntrino
G+ : Zerntrino Plus
เนื่องจากข้อมูลใน RDB นั้น ต้องเป็น relation แต่ว่าสำหรับข้อมูลจำพวก NoSQL นั้น ข้อมูลมิได้ถูกเก็บอยู่ในรูปของ relation ทั้งหมด จึงทำให้ไม่สามารถใช้ RDB ในการเก็บ และ SQL ในการจัดการได้
การที่ข้อมูลมิได้ถูกเก็บอยู่ในรูปของ relation นั้น จะทำให้เกิดปัญหาหลายประการ ที่เห็นได้ชัดคือ redundancy (ปัญหาจำพวก insert,update,delete) ซึ่งใน RDB นั้นไม่ยอม โดยจะต้องทำการ Normalized ข้อมูลก่อน แต่ใน NoSQL ทั้งหลาย ยอมให้ข้อมูลมี redundancy บ้าง(ไม่แน่ใน รอผู้รู้มาเสริม) ซึ่งแน่นอน ก็ต้องพบกับปัญหา insert,update, delete
ซึ่งปัญหา insert, update, delete นี้ ไม่ว่าคุณจะอัพระบบให้มีความสามารถสูงเพียงใด ปัญหาการ insert, update, delete นั้นก็ยังคงอยู่ จึงกล่าวได้ว่า ปัญหา insert, update, delete นั้น เป็นปัญหาที่ Hardware แก้ไม่ได้
(ต่อไปนี้จะเป็นความคิดเห็นส่วนตัวล้วนๆ หากผิดพลาด โปรดชี้แจงด้วยครับ)
สำหรับกรณี Facebook นั้น FB เลือกเก็บข้อมูลโดยใช้ฐานข้อมูลแบบ NoSQL(ไม่แน่ใจว่าเป็นผลิตภัณฑ์ตัวไหน) ซึ่งมีข้อดีคือทำงานเร็วกว่าแบบ RDB แต่ก็อาจจะเจอกับปัญหาดังข้างบนที่กล่าวมา
ดังนั้น ถึงแม้ FB จะอัพเซอเวอร์แล้ว ปัญหาอาจจะยังไม่หมดไป เพราะ FB ยังต้องรับมือกับปัญหา insert, update, delete ทั้งหมดด้วยครับ
ส่วนตัวผมคิดว่า ข้อมูลเกี่ยวกับเรื่อง DB นี้ คน IT ยังมีเข้าใจผิดๆ ถูกๆ อยู่บ้างครับ
หากผมผิดพลาดประการใด ต้องขออภัยมา ณ ที่นี้ด้วยครับ แล้วผมจะมาแก้ไขให้ครับ
ผมว่าหลายๆท่านในนี้น่าจะมีความรู้มากกว่าผม หากประเด็นนี้ยังไม่เคลีย เดี๋ยวรอท่านอื่นมาเสริมนะครับ
Edit 1
เพิ่มความหมายของคำย่อต่างๆ
FB : Facebook
RDB : Rational Database
redundancy : Minimum Redundancy (จาก 1 ใน 5 ข้อของ Good Characteristic of Database System)
NoSQL : Not only SQL
Edit 2
Facebook ใช้ Cassandra ในการเก็บข้อมูลครับ ส่วน Facebook Messenger นั้น ใช้ HBase ครับ
เรื่อง redundancy นี่ไม่เกี่ยวนะครับ RDBMS ก็มีข้อมูลซ้ำได้เหมือนกัน
ปัญหาจริงๆ คือ consistency ที่เอาไปแลกกับ availability ซึ่งจากทฤษฎี CAP (Consistency, Availability, Partition tolerance) บอกว่าเราไม่สามารถได้คุณสมบัติทั้งสามอย่างพร้อมๆ กันได้ มันก็เลยทำให้ ณ ขณะหนึ่งผู้ใช้สองคนอาจจะเห็นข้อมูลไม่เหมือนกันได้
บาง notify แล้ว คลิกเข้าไปดันไม่โผล่ แต่อีกหน้าที่เปิดหรอ ดันโชว์แล้ว
+1 ต้อง Ctrl+F5 ประจำเลยครับ
อันนั้นน่าจะเป็นที่ javascript
db มันน่าจะถูกแล้วนะ
{$user} was not an Imposter
มันเป็นระบบที่ทำงานไวมาก รองรับคนมหาศาลในเวลาเดียวกัน บางครั้งบางทีมันก็ละเลยข้อมูลบางอย่างไปเพื่อความรวดเร็วของการตอบสนอง
ที่เจอช่วงนี้คือบัคที่หน้ารวม feed สองอย่าง อย่างแรกคือกด like ของใหม่แล้วมัน feed ของเก่าที่เคยกด like ขึ้นมา อย่างที่สองคือมันเอาคอมเมนต์โพสต์นึงไปใส่ของอีกโพสต์นึง สองอย่างนี้เกิดขึ้นจริง ๆ และ PrtSc เก็บไว้ด้วย ถ้าในหน้า profile ก็ยังไม่เคยเจออะไรแปลก ๆ