ฐานข้อมูลคอลัมน์คืออะไร?


98

ฉันทำงานกับคลังสินค้ามาระยะหนึ่งแล้ว

ฉันรู้สึกทึ่งกับฐานข้อมูลคอลัมน์และความเร็วที่พวกเขามีให้สำหรับการดึงข้อมูล

ฉันมีคำถามหลายส่วน:

  • Columnar Databases ทำงานอย่างไร
  • พวกเขาแตกต่างจากฐานข้อมูลเชิงสัมพันธ์อย่างไร?

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

คำตอบ:


50

Columnar Databases ทำงานอย่างไร
ฐานข้อมูลเรียงเป็นแนวความคิดที่ค่อนข้างเฉพาะสถาปัตยกรรม / การดำเนินงาน กล่าวอีกนัยหนึ่งไม่มีคำอธิบายเฉพาะเกี่ยวกับวิธีการทำงานของฐานข้อมูลเหล่านี้ จริงๆแล้วหลาย ๆ ตัวสร้างขึ้นจาก DBMS แบบดั้งเดิมที่เน้นแถวเพียงแค่จัดเก็บข้อมูลในตารางด้วยคอลัมน์เดียว (หรือมากกว่าสองคอลัมน์) (และเพิ่มเลเยอร์ที่จำเป็นเพื่อเข้าถึงข้อมูลคอลัมน์อย่างง่ายดาย)

พวกเขาแตกต่างจากฐานข้อมูลเชิงสัมพันธ์อย่างไร? โดยทั่วไปแล้วจะแตกต่างจากฐานข้อมูลแบบดั้งเดิม (เชิงแถว) เกี่ยวกับ ...

  • ประสิทธิภาพ...
  • ข้อกำหนดในการจัดเก็บ ...
  • ความสะดวกในการปรับเปลี่ยนสคีมา ...

... ในกรณีการใช้งานที่เฉพาะเจาะจงของ DBMSes
โดยเฉพาะอย่างยิ่งพวกเขามีข้อได้เปรียบในพื้นที่ที่กล่าวถึงเมื่อการใช้งานทั่วไปคือการคำนวณค่ารวมในคอลัมน์จำนวน จำกัด ซึ่งต่างจากการพยายามดึงข้อมูลคอลัมน์ทั้งหมด / ส่วนใหญ่สำหรับเอนทิตีที่กำหนด

มีฐานข้อมูลคอลัมน์รุ่นทดลองที่ฉันสามารถติดตั้งเพื่อเล่นได้หรือไม่? (ฉันใช้ Windows 7) ใช่มีการใช้งานฐานข้อมูลคอลัมน์ในเชิงพาณิชย์ฟรีและโอเพ่นซอร์ส ดูรายการในตอนท้ายของบทความ Wikipediaสำหรับผู้เริ่มต้น
ระวังว่าการนำไปใช้งานหลายอย่างเหล่านี้ได้รับการแนะนำเพื่อตอบสนองความต้องการเฉพาะ (เช่นขนาดเล็กมากการกระจายข้อมูลที่บีบอัดได้สูงหรือการจำลองเมทริกซ์สำรองเป็นต้น) แทนที่จะจัดเตรียม DBMS แบบคอลัมน์ตามวัตถุประสงค์

หมายเหตุ: ข้อสังเกตเกี่ยวกับ "การวางแนวจุดประสงค์เดียว" ของ DBMS แบบคอลัมน์หลายคอลัมน์ไม่ใช่คำวิจารณ์ของการนำไปใช้งานเหล่านี้ แต่เป็นข้อบ่งชี้เพิ่มเติมว่าแนวทางสำหรับ DBMSes เบี่ยงเบนไปจากแนวทางที่ "เป็นธรรมชาติ" (และใช้ในวงกว้างมากกว่า) จัดเก็บเอนทิตีบันทึก ด้วยเหตุนี้แนวทางนี้จึงถูกนำมาใช้เมื่อแนวทางเชิงแถวไม่เป็นที่น่าพอใจดังนั้นจึงมีแนวโน้มที่จะ
a) ถูกกำหนดเป้าหมายสำหรับวัตถุประสงค์เฉพาะ b) ได้รับทรัพยากร / ความสนใจน้อยกว่าการทำงานใน "วัตถุประสงค์ทั่วไป" "พยายามและ ทดสอบแล้ว "วิธีการแบบตาราง

โดยไม่แน่นอนแบบจำลองข้อมูลเอนทิตี - แอตทริบิวต์ - มูลค่า (EAV) อาจเป็นกลยุทธ์การจัดเก็บข้อมูลทางเลือกที่คุณอาจต้องการพิจารณา แม้ว่าจะแตกต่างจากแบบจำลอง Columnar DB แบบ "บริสุทธิ์" แต่ EAV ก็แบ่งปันคุณลักษณะหลายประการของ Columnar DBs


253

ฐานข้อมูลคอลัมน์ทำงานอย่างไร แนวคิดในการกำหนดคอลัมน์ที่เก็บคือค่าของตารางจะถูกจัดเก็บอย่างต่อเนื่องโดยคอลัมน์ ดังนั้นตารางซัพพลายเออร์แบบคลาสสิกจากฐานข้อมูลซัพพลายเออร์และชิ้นส่วนของ CJ Date:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

จะถูกเก็บไว้ในดิสก์หรือในหน่วยความจำเช่น:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

ตรงกันข้ามกับ rowstore แบบเดิมซึ่งจะเก็บข้อมูลในลักษณะนี้มากกว่า:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

จากแนวคิดง่ายๆนี้จะแสดงถึงความแตกต่างพื้นฐานทั้งหมดในด้านประสิทธิภาพไม่ว่าจะดีขึ้นหรือแย่ลงระหว่างร้านค้าแบบคอลัมน์และร้านค้าแถว ตัวอย่างเช่นที่เก็บคอลัมน์จะทำได้ดีในการรวบรวมข้อมูลเช่นผลรวมและค่าเฉลี่ย แต่การแทรกแถวเดียวอาจมีราคาแพงในขณะที่ค่าผกผันถือเป็นจริงสำหรับร้านค้าแถว สิ่งนี้ควรชัดเจนจากแผนภาพด้านบน

พวกเขาแตกต่างจากฐานข้อมูลเชิงสัมพันธ์อย่างไร? ฐานข้อมูลความสัมพันธ์เป็นแนวคิดเชิงตรรกะ ฐานข้อมูลคอลัมน์หรือที่เก็บคอลัมน์เป็นแนวคิดทางกายภาพ ดังนั้นทั้งสองคำจึงไม่สามารถเทียบเคียงกันได้อย่างมีความหมาย DMBS ที่เน้นคอลัมน์อาจเป็นเชิงสัมพันธ์หรือไม่ก็ได้เช่นเดียวกับที่ DBMS ที่เน้นแถวอาจยึดติดกับหลักการเชิงสัมพันธ์มากหรือน้อย


22
ดูเหมือนจะดีกว่าคำตอบที่ยอมรับ แต่ฉันไม่ใช่ผู้เชี่ยวชาญ โหวตขึ้น
Rob Grant

2
ฐานข้อมูลเชิงคอลัมน์ถูกใช้ในกรณีที่มีการสอบถามการรวมในคอลัมน์เฉพาะเช่นรายงานการขาย ประเด็นที่นี่คือถ้าคุณใช้ฐานข้อมูลเชิงแถวแถวทั้งหมด (บล็อก) จะต้องถูกนำไปยังหน่วยความจำหลักซึ่งรวมถึงเวลาในการค้นหาจำนวนมากจากดิสก์เพื่อนำบล็อกทั้งหมดจากดิสก์ไปยังหน่วยความจำแม้ว่าคุณจะสนใจเฉพาะคอลัมน์ก็ตาม ซึ่งช่วยคุณในการจัดทำรายงานการขาย ในขณะที่คอลัมน์โครงร่างเชิงคอลัมน์จะถูกจัดเก็บอย่างต่อเนื่องในบล็อกซึ่งทำให้การค้นหาน้อยลงเนื่องจากจำนวนบล็อกน้อยลง ดังนั้นฐานข้อมูลคอลัมน์จึงถูกใช้สำหรับ OLAP ในขณะที่แถวที่มุ่งเน้นใช้สำหรับข้อมูล OLTP
bharatj

4

ฉันจะบอกว่าผู้สมัครที่ดีที่สุดที่จะเข้าใจเกี่ยวกับฐานข้อมูลเชิงคอลัมน์คือการตรวจสอบ HBase ( Apache Hbase ) คุณชำระเงินรหัสและสำรวจเพิ่มเติมเพื่อหาข้อมูลเกี่ยวกับการใช้งาน


2

นอกจากนี้ Columnar DB ยังมีความสัมพันธ์ในตัวสำหรับการบีบอัดข้อมูลและกระบวนการโหลดจะไม่ซ้ำกัน นี่คือบทความที่ฉันเขียนในปี 2008 ซึ่งจะอธิบายเพิ่มเติมเล็กน้อย

คุณอาจสนใจรายงานใหม่จาก Carl Olofson ของ IDC เกี่ยวกับเทคโนโลยี DBMS รุ่นที่ 3 มันกล่าวถึงเสาและอื่น ๆ หากคุณไม่ใช่ลูกค้า IDC คุณสามารถรับได้ฟรีบนเว็บไซต์ของเรา เขากำลังทำการสัมมนาผ่านเว็บในวันที่ 16 มิถุนายนด้วย (เช่นกันในเว็บไซต์ของเรา)

(BTW หนึ่งความคิดเห็นด้านบนแสดงรายการ asterdata แต่ฉันไม่คิดว่าเป็นคอลัมน์)


คุณสามารถรับรายงาน IDC ได้ที่: paraccel.com/press/3rd_generation_database_technology
kim stanick

Aster Data เป็นฐานข้อมูลเชิงสัมพันธ์ MPP และมีการสนับสนุนดั้งเดิมสำหรับตารางคอลัมน์
topchef

@kimstanick URL ของ paraccel ตายแล้ว
user674669

2

เพื่อให้เข้าใจว่าฐานข้อมูลเชิงคอลัมน์คืออะไรควรเปรียบเทียบกับฐานข้อมูลเชิงแถว

ฐานข้อมูลเชิงแถว (เช่น MS SQL Server และ SQLite) ได้รับการออกแบบมาเพื่อส่งคืนข้อมูลสำหรับทั้งแถวอย่างมีประสิทธิภาพ ทำได้โดยการจัดเก็บค่าคอลัมน์ทั้งหมดของแถวไว้ด้วยกัน ฐานข้อมูลแบบเรียงแถวเหมาะสำหรับระบบ OLTP (เช่นการขายปลีกและระบบธุรกรรมทางการเงิน)

ฐานข้อมูลเชิงคอลัมน์ได้รับการออกแบบมาเพื่อส่งคืนข้อมูลอย่างมีประสิทธิภาพสำหรับคอลัมน์จำนวน จำกัด ทำได้โดยการจัดเก็บค่าทั้งหมดของคอลัมน์ไว้ด้วยกัน ฐานข้อมูลเชิงคอลัมน์ที่ใช้กันอย่างแพร่หลายสองฐานข้อมูลคือ Apache Hbase และ Google BigTable (Google ใช้สำหรับการค้นหา Analytics แผนที่และ Gmail) เหมาะสำหรับโครงการข้อมูลขนาดใหญ่ ฐานข้อมูลเชิงคอลัมน์จะเก่งในการดำเนินการอ่านในจำนวนคอลัมน์ที่ จำกัด อย่างไรก็ตามการเขียนจะมีราคาแพงเมื่อเทียบกับฐานข้อมูลเชิงแถว

สำหรับข้อมูลเพิ่มเติม: https://en.wikipedia.org/wiki/Column-oriented_DBMS


1

ข้อมูลผลิตภัณฑ์. สิ่งนี้อาจช่วยได้ สิ่งเหล่านี้เป็นผลิตภัณฑ์เด่นในการค้นหาของ Google

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php


สิ่งหนึ่งที่ควรทราบเกี่ยวกับ Vertica คือฉันได้เห็นการอ้างอิงบนเว็บเกี่ยวกับต้นทุนใบอนุญาตที่จัดเก็บข้อมูล $ 150k / TB ดังนั้นมันจึงไม่ถูก
มาร์ค

@ มาร์ค: ต้นทุนไม่ใช่ปัญหา ข้อมูลเป็นประเด็น หาก OP ต้องการข้อมูลผู้ขายมักจะเป็นแหล่งข้อมูลที่ดีที่สุด
ล็อตต์

1
Amazon เสนอพื้นที่จัดเก็บข้อมูล RedShift ที่รวดเร็วเป็นพิเศษภายใต้ $ 1,000 ต่อเทราไบต์ต่อปีหากคุณไม่ได้มองหา Columnar one โดยเฉพาะ
mevdiven

1

kxเป็นฐานข้อมูลคอลัมน์อื่นตัวอย่างเช่นใช้ในภาคการเงิน ใบอนุญาตค่อนข้าง $ 50K ครั้งล่าสุดที่ฉันตรวจสอบแม้ว่า ไม่มีการเพิ่มประสิทธิภาพจำเป็นดัชนีไม่จำเป็นต้องเพราะ KX มีผู้ประกอบการที่มีประสิทธิภาพ (MATLAB เทียบเท่า: .*, kron, bsxfun, ... )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.