ฉันทำงานกับคลังสินค้ามาระยะหนึ่งแล้ว
ฉันรู้สึกทึ่งกับฐานข้อมูลคอลัมน์และความเร็วที่พวกเขามีให้สำหรับการดึงข้อมูล
ฉันมีคำถามหลายส่วน:
- Columnar Databases ทำงานอย่างไร
- พวกเขาแตกต่างจากฐานข้อมูลเชิงสัมพันธ์อย่างไร?
ฉันทำงานกับคลังสินค้ามาระยะหนึ่งแล้ว
ฉันรู้สึกทึ่งกับฐานข้อมูลคอลัมน์และความเร็วที่พวกเขามีให้สำหรับการดึงข้อมูล
ฉันมีคำถามหลายส่วน:
คำตอบ:
Columnar Databases ทำงานอย่างไร
ฐานข้อมูลเรียงเป็นแนวความคิดที่ค่อนข้างเฉพาะสถาปัตยกรรม / การดำเนินงาน กล่าวอีกนัยหนึ่งไม่มีคำอธิบายเฉพาะเกี่ยวกับวิธีการทำงานของฐานข้อมูลเหล่านี้ จริงๆแล้วหลาย ๆ ตัวสร้างขึ้นจาก DBMS แบบดั้งเดิมที่เน้นแถวเพียงแค่จัดเก็บข้อมูลในตารางด้วยคอลัมน์เดียว (หรือมากกว่าสองคอลัมน์) (และเพิ่มเลเยอร์ที่จำเป็นเพื่อเข้าถึงข้อมูลคอลัมน์อย่างง่ายดาย)
พวกเขาแตกต่างจากฐานข้อมูลเชิงสัมพันธ์อย่างไร? โดยทั่วไปแล้วจะแตกต่างจากฐานข้อมูลแบบดั้งเดิม (เชิงแถว) เกี่ยวกับ ...
... ในกรณีการใช้งานที่เฉพาะเจาะจงของ DBMSes
โดยเฉพาะอย่างยิ่งพวกเขามีข้อได้เปรียบในพื้นที่ที่กล่าวถึงเมื่อการใช้งานทั่วไปคือการคำนวณค่ารวมในคอลัมน์จำนวน จำกัด ซึ่งต่างจากการพยายามดึงข้อมูลคอลัมน์ทั้งหมด / ส่วนใหญ่สำหรับเอนทิตีที่กำหนด
มีฐานข้อมูลคอลัมน์รุ่นทดลองที่ฉันสามารถติดตั้งเพื่อเล่นได้หรือไม่? (ฉันใช้ Windows 7)
ใช่มีการใช้งานฐานข้อมูลคอลัมน์ในเชิงพาณิชย์ฟรีและโอเพ่นซอร์ส ดูรายการในตอนท้ายของบทความ Wikipediaสำหรับผู้เริ่มต้น
ระวังว่าการนำไปใช้งานหลายอย่างเหล่านี้ได้รับการแนะนำเพื่อตอบสนองความต้องการเฉพาะ (เช่นขนาดเล็กมากการกระจายข้อมูลที่บีบอัดได้สูงหรือการจำลองเมทริกซ์สำรองเป็นต้น) แทนที่จะจัดเตรียม DBMS แบบคอลัมน์ตามวัตถุประสงค์
หมายเหตุ: ข้อสังเกตเกี่ยวกับ "การวางแนวจุดประสงค์เดียว" ของ DBMS แบบคอลัมน์หลายคอลัมน์ไม่ใช่คำวิจารณ์ของการนำไปใช้งานเหล่านี้ แต่เป็นข้อบ่งชี้เพิ่มเติมว่าแนวทางสำหรับ DBMSes เบี่ยงเบนไปจากแนวทางที่ "เป็นธรรมชาติ" (และใช้ในวงกว้างมากกว่า) จัดเก็บเอนทิตีบันทึก ด้วยเหตุนี้แนวทางนี้จึงถูกนำมาใช้เมื่อแนวทางเชิงแถวไม่เป็นที่น่าพอใจดังนั้นจึงมีแนวโน้มที่จะ
a) ถูกกำหนดเป้าหมายสำหรับวัตถุประสงค์เฉพาะ b) ได้รับทรัพยากร / ความสนใจน้อยกว่าการทำงานใน "วัตถุประสงค์ทั่วไป" "พยายามและ ทดสอบแล้ว "วิธีการแบบตาราง
โดยไม่แน่นอนแบบจำลองข้อมูลเอนทิตี - แอตทริบิวต์ - มูลค่า (EAV) อาจเป็นกลยุทธ์การจัดเก็บข้อมูลทางเลือกที่คุณอาจต้องการพิจารณา แม้ว่าจะแตกต่างจากแบบจำลอง Columnar DB แบบ "บริสุทธิ์" แต่ EAV ก็แบ่งปันคุณลักษณะหลายประการของ Columnar DBs
ฐานข้อมูลคอลัมน์ทำงานอย่างไร แนวคิดในการกำหนดคอลัมน์ที่เก็บคือค่าของตารางจะถูกจัดเก็บอย่างต่อเนื่องโดยคอลัมน์ ดังนั้นตารางซัพพลายเออร์แบบคลาสสิกจากฐานข้อมูลซัพพลายเออร์และชิ้นส่วนของ 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 ที่เน้นแถวอาจยึดติดกับหลักการเชิงสัมพันธ์มากหรือน้อย
ฉันจะบอกว่าผู้สมัครที่ดีที่สุดที่จะเข้าใจเกี่ยวกับฐานข้อมูลเชิงคอลัมน์คือการตรวจสอบ HBase ( Apache Hbase ) คุณชำระเงินรหัสและสำรวจเพิ่มเติมเพื่อหาข้อมูลเกี่ยวกับการใช้งาน
นอกจากนี้ Columnar DB ยังมีความสัมพันธ์ในตัวสำหรับการบีบอัดข้อมูลและกระบวนการโหลดจะไม่ซ้ำกัน นี่คือบทความที่ฉันเขียนในปี 2008 ซึ่งจะอธิบายเพิ่มเติมเล็กน้อย
คุณอาจสนใจรายงานใหม่จาก Carl Olofson ของ IDC เกี่ยวกับเทคโนโลยี DBMS รุ่นที่ 3 มันกล่าวถึงเสาและอื่น ๆ หากคุณไม่ใช่ลูกค้า IDC คุณสามารถรับได้ฟรีบนเว็บไซต์ของเรา เขากำลังทำการสัมมนาผ่านเว็บในวันที่ 16 มิถุนายนด้วย (เช่นกันในเว็บไซต์ของเรา)
(BTW หนึ่งความคิดเห็นด้านบนแสดงรายการ asterdata แต่ฉันไม่คิดว่าเป็นคอลัมน์)
เพื่อให้เข้าใจว่าฐานข้อมูลเชิงคอลัมน์คืออะไรควรเปรียบเทียบกับฐานข้อมูลเชิงแถว
ฐานข้อมูลเชิงแถว (เช่น MS SQL Server และ SQLite) ได้รับการออกแบบมาเพื่อส่งคืนข้อมูลสำหรับทั้งแถวอย่างมีประสิทธิภาพ ทำได้โดยการจัดเก็บค่าคอลัมน์ทั้งหมดของแถวไว้ด้วยกัน ฐานข้อมูลแบบเรียงแถวเหมาะสำหรับระบบ OLTP (เช่นการขายปลีกและระบบธุรกรรมทางการเงิน)
ฐานข้อมูลเชิงคอลัมน์ได้รับการออกแบบมาเพื่อส่งคืนข้อมูลอย่างมีประสิทธิภาพสำหรับคอลัมน์จำนวน จำกัด ทำได้โดยการจัดเก็บค่าทั้งหมดของคอลัมน์ไว้ด้วยกัน ฐานข้อมูลเชิงคอลัมน์ที่ใช้กันอย่างแพร่หลายสองฐานข้อมูลคือ Apache Hbase และ Google BigTable (Google ใช้สำหรับการค้นหา Analytics แผนที่และ Gmail) เหมาะสำหรับโครงการข้อมูลขนาดใหญ่ ฐานข้อมูลเชิงคอลัมน์จะเก่งในการดำเนินการอ่านในจำนวนคอลัมน์ที่ จำกัด อย่างไรก็ตามการเขียนจะมีราคาแพงเมื่อเทียบกับฐานข้อมูลเชิงแถว
สำหรับข้อมูลเพิ่มเติม: https://en.wikipedia.org/wiki/Column-oriented_DBMS
ข้อมูลผลิตภัณฑ์. สิ่งนี้อาจช่วยได้ สิ่งเหล่านี้เป็นผลิตภัณฑ์เด่นในการค้นหาของ Google
kxเป็นฐานข้อมูลคอลัมน์อื่นตัวอย่างเช่นใช้ในภาคการเงิน ใบอนุญาตค่อนข้าง $ 50K ครั้งล่าสุดที่ฉันตรวจสอบแม้ว่า ไม่มีการเพิ่มประสิทธิภาพจำเป็นดัชนีไม่จำเป็นต้องเพราะ KX มีผู้ประกอบการที่มีประสิทธิภาพ (MATLAB เทียบเท่า: .*
, kron
, bsxfun
, ... )