ระบบจัดเก็บข้อมูลแบบปรับขนาดได้
ระบบจัดเก็บข้อมูลแบบปรับขนาดได้กระจายข้อมูลไปทั่วเครื่องจักรหลายเครื่องเพื่อรองรับความจุ ปริมาณงาน และความพร้อมใช้งานที่เกินกว่าเซิร์ฟเวอร์เดี่ยวจะทำได้ พร้อมทั้งปกปิดความล้มเหลวของแต่ละโหนด
Definition
ระบบจัดเก็บข้อมูลแบบปรับขนาดได้จะจัดเก็บข้อมูลในคลัสเตอร์ของเครื่องจักร โดยแบ่งพาร์ติชันเพื่อเพิ่มความจุและปริมาณงาน และจำลองข้อมูลเพื่อความทนทานและความพร้อมใช้งาน เพื่อให้ระบบโดยรวมสามารถปรับขนาดได้ตามจำนวนโหนดในขณะที่ยังคงทนต่อความล้มเหลวของแต่ละโหนดได้
Scope
หัวข้อนี้ครอบคลุมระบบไฟล์แบบกระจายที่ออกแบบมาสำหรับคลัสเตอร์สินค้าทั่วไป, ที่เก็บข้อมูลแบบคีย์-ค่าและคอลัมน์กว้างแบบกระจาย, และเทคนิคการซ้อนทับแบบมีโครงสร้าง—การแฮชแบบสอดคล้องกันและตารางแฮชแบบกระจาย—ที่ใช้ในการแบ่งพาร์ติชันและค้นหาข้อมูลในขนาดใหญ่ ครอบคลุมการแบ่งพาร์ติชันข้อมูล (sharding), การจำลองข้อมูลเพื่อความทนทาน, และการแลกเปลี่ยนระหว่างความสอดคล้องและความพร้อมใช้งานที่แยกความแตกต่างระหว่างที่เก็บข้อมูลที่มีความสอดคล้องสูงกับที่เก็บข้อมูลที่มีความพร้อมใช้งานสูง
Core questions
- ข้อมูลถูกแบ่งพาร์ติชันและค้นหาในชุดโหนดขนาดใหญ่ที่มีการเปลี่ยนแปลงได้อย่างไร?
- ความทนทานและความพร้อมใช้งานเกิดขึ้นได้อย่างไรแม้จะเกิดความล้มเหลวของโหนดบ่อยครั้ง?
- ที่เก็บข้อมูลแบบปรับขนาดได้สามารถให้การรับประกันความสอดคล้องแบบใดได้บ้าง และมีค่าใช้จ่ายเท่าใด?
Key theories
- ระบบไฟล์คลัสเตอร์
- ระบบเช่น Google File System จัดเก็บไฟล์ขนาดใหญ่เป็นส่วนย่อยที่จำลองข้ามเซิร์ฟเวอร์สินค้าทั่วไป โดยปรับให้เหมาะสมสำหรับการเข้าถึงแบบลำดับขนาดใหญ่ และถือว่าความล้มเหลวเป็นเรื่องปกติมากกว่าเป็นข้อยกเว้น
- ที่เก็บข้อมูลแบบมีโครงสร้างแบบกระจาย
- ที่เก็บข้อมูลแบบคอลัมน์กว้างและคีย์-ค่า เช่น Bigtable และ Dynamo แบ่งพาร์ติชันข้อมูลตามคีย์ข้ามโหนดและจำลองข้อมูล โดยแลกเปลี่ยนความสามารถในการสอบถามและความสอดคล้องกับการปรับขนาดในแนวนอนและความพร้อมใช้งาน
- การแฮชแบบสอดคล้องกันและตารางแฮชแบบกระจาย
- การแฮชแบบสอดคล้องกันจะแมปคีย์และโหนดลงบนวงแหวน เพื่อให้การเพิ่มหรือลบโหนดเคลื่อนย้ายคีย์เพียงส่วนน้อยเท่านั้น และตารางแฮชแบบกระจายเช่น Chord ให้การค้นหาคีย์แบบกระจายศูนย์ที่ปรับขนาดได้ด้วยการกำหนดเส้นทางแบบลอการิทึม
Clinical relevance
การจัดเก็บข้อมูลแบบปรับขนาดได้เป็นรากฐานที่ทนทานของแพลตฟอร์มคลาวด์และบริการเว็บขนาดใหญ่: ที่เก็บวัตถุ, ฐานข้อมูล, และไปป์ไลน์การวิเคราะห์ ล้วนตั้งอยู่บนระบบไฟล์แบบกระจายและที่เก็บข้อมูลแบบคีย์-ค่า ซึ่งการเลือกการแบ่งพาร์ติชันและการจำลองข้อมูลเป็นตัวกำหนดการรับประกันความทนทานและความสอดคล้องของระบบ
History
ตารางแฮชแบบกระจายแบบเพียร์ทูเพียร์ เช่น Chord (2001) แสดงให้เห็นถึงการค้นหาแบบกระจายศูนย์ที่ปรับขนาดได้; Google's File System (2003) และ Bigtable (2006-2008) แสดงให้เห็นถึงการจัดเก็บข้อมูลขนาดคลัสเตอร์สำหรับข้อมูลที่มีโครงสร้าง; และ Amazon's Dynamo (2007) ทำให้ที่เก็บข้อมูลแบบคีย์-ค่าที่มีความพร้อมใช้งานสูงเป็นที่นิยม ซึ่งทั้งหมดนี้ได้ก่อตั้งภูมิทัศน์ของการจัดเก็บข้อมูลแบบปรับขนาดได้และ NoSQL ในปัจจุบัน
Debates
- ความสอดคล้องที่เข้มงวดเทียบกับความพร้อมใช้งานสูงในการจัดเก็บข้อมูล
- ที่เก็บข้อมูลที่มีความสอดคล้องที่เข้มงวดช่วยให้ตรรกะของแอปพลิเคชันง่ายขึ้น แต่ต้องเสียสละความพร้อมใช้งานภายใต้การแบ่งพาร์ติชัน ในขณะที่ที่เก็บข้อมูลที่มีความพร้อมใช้งานสูงเช่น Dynamo ยอมรับความแตกต่างชั่วคราวและผลักดันการแก้ไขข้อขัดแย้งไปยังแอปพลิเคชัน; การเลือกที่เหมาะสมขึ้นอยู่กับความทนทานของข้อมูลต่อความล้าสมัย
Key figures
- Sanjay Ghemawat
- Werner Vogels
- Ion Stoica
- Hari Balakrishnan
Related topics
Seminal works
- ghemawat2003
- decandia2007
- stoica2001
Frequently asked questions
- การแฮชแบบสอดคล้องกันแก้ปัญหาอะไร?
- เมื่อข้อมูลถูกแบ่งพาร์ติชันข้ามโหนดโดยการแฮชคีย์ การแฮชแบบธรรมดาจะจัดเรียงข้อมูลใหม่เกือบทั้งหมดเมื่อมีการเพิ่มหรือลบโหนด การแฮชแบบสอดคล้องกันจะจัดเรียงคีย์และโหนดบนวงแหวน เพื่อให้การเปลี่ยนแปลงดังกล่าวเคลื่อนย้ายคีย์เพียงส่วนน้อยที่จำกัด ซึ่งจำเป็นสำหรับคลัสเตอร์ที่มีความยืดหยุ่นและมีการเปลี่ยนแปลงอยู่ตลอดเวลา