RocksDB: ฐานข้อมูล NoSQL สำหรับประสิทธิภาพและความสามารถในการปรับขนาดสูง

เผยแพร่แล้ว: 2022-11-19

RocksDB เป็นฐานข้อมูล NoSQL ยอดนิยมที่หลายบริษัทใช้เนื่องจากประสิทธิภาพและความสามารถในการปรับขนาดสูง เป็นโครงการโอเพ่นซอร์สที่เริ่มต้นโดย Facebook และปัจจุบันดูแลโดยชุมชนนักพัฒนา RocksDB ใช้โครงสร้างข้อมูล Log-Structured Merge-Tree (LSM) ที่ทำให้มีประสิทธิภาพสำหรับเวิร์กโหลดที่มีการเขียนสูง

หลังจากใช้ Couchbase มานานกว่าสี่ปี เราก็ย้ายไปที่ MongoDB และรู้สึกยินดีกับผลลัพธ์ที่ได้ ประสบการณ์กับ Couchbase นั้นน่ากลัว แม้ว่าเราจะได้รับการสนับสนุนจากองค์กรและรายชื่อบนแพลตฟอร์มก็ตาม คุณต้องมีเซิร์ฟเวอร์ทั้งหมดอย่างน้อยหกเครื่องจึงจะทำให้มันใช้งานได้ สำหรับการผลิต มีเพียงหกเซิร์ฟเวอร์ที่จะสร้าง แคชในหน่วยความจำถูกจัดการโดยอินสแตนซ์ Memcached ที่มีขนาดเล็กกว่าบนอินสแตนซ์ Couchbase โปรแกรมนี้ใช้ RAM ขนาด 8GB ซึ่งสามารถให้บริการเอกสารได้ 5,000 ฉบับ ความจริงไม่ได้อยู่นอกสถานที่ มีเอกสารน้อยกว่า 5,000 รายการบนอินสแตนซ์ Couchbase และดัชนีน้อยกว่า 20 รายการ และการใช้หน่วยความจำสำหรับอินสแตนซ์นั้นมากกว่า 8 GB เสมอ

RocksDB ซึ่งเป็นฐานข้อมูลแบบฝัง ทำงานได้ดีในแง่ของข้อมูลคีย์-ค่า นี่คือทางแยกของ LevelDB ของ Google ที่ได้รับการปรับให้เหมาะสำหรับการจัดการคอร์ CPU จำนวนมาก และเหมาะสำหรับปริมาณงานที่มีความต้องการ I/O สูง สามารถเรียกใช้บนโซลิดสเตตไดร์ฟ (SSD) หรืออุปกรณ์จัดเก็บข้อมูลประสิทธิภาพสูงอื่นๆ

เมื่อพวกเขาสร้างเวอร์ชั่น Cassandra พวกเขารวม RocksDB storage engine หรือที่เรียกว่า Rocksandra เราเปลี่ยนวิธีที่เราคิดเกี่ยวกับที่เก็บข้อมูลของ Cassandra อย่างมาก ในขณะเดียวกันก็รักษาเครือข่ายและการประสานงานของโหนดไว้เหมือนเดิม

Rocksdb เป็นฐานข้อมูลในหน่วยความจำหรือไม่?

ภาพโดย: github

หน้าที่หลักคือให้บริการข้อมูลที่มีประสิทธิภาพสูงเนื่องจากเป็นฐานข้อมูลแบบฝังตามข้อมูลคีย์-ค่า RocksDB ซึ่งแยกมาจาก LevelDB ของ Google นั้นสามารถทำงานได้ดีกว่าคอร์ CPU หลายตัว และจัดเก็บข้อมูลได้เร็วกว่า SSD สำหรับแอปพลิเคชันที่เชื่อมต่อกับ I/O

คอมโพเนนต์อย่างน้อยหนึ่งรายการใน RocksDB อาจนำไปสู่การใช้หน่วยความจำมากเกินไป เมื่อคุณเรียก GetUsage() บนวัตถุบล็อกแคชใน MongoRocks คุณสามารถกำหนดขนาดของบล็อกแคชได้ เมื่อขนาดบล็อกแคชลดลง ข้อมูลจะถูกแคชมากขึ้น เนื่องจาก IO จะไม่เพิ่มขึ้น แม้ว่าการใช้งาน CPU อาจไม่เพิ่มขึ้นเนื่องจากความต้องการของ RocksDB ในการขยายหน้าที่อ่านจากแคชของหน้า แต่ก็อาจเพิ่มขึ้นได้ บล็อกดัชนีและบล็อกตัวกรองบานมักใช้เพื่ออธิบายความแตกต่าง ใน MongoRocks คุณสามารถตั้งค่าบล็อกแคชได้โดยการจัดสรรงบประมาณหน่วยความจำสำหรับเมมเทเบิล เมื่อพูดถึงการคำนวณการใช้หน่วยความจำสำหรับบล็อกที่ปักหมุด เป็นเรื่องง่าย ขนาด L1 สามารถควบคุมได้โดยการเพิ่มหรือลบไบต์สำหรับระดับฐาน เมื่อคุณมีธุรกรรมการอ่าน 100k เกิดขึ้นพร้อมกัน อาจทำให้หน่วยความจำอืดได้

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

ทำไม Rocksdb จึงเป็นที่เก็บคีย์-ค่าที่ดีที่สุด

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

Rocksdb แตกต่างจาก Redis อย่างไร

ภาพโดย: githubusercontent

กรณีการใช้งานหลักสำหรับ Redis คือหน่วยความจำ แม้ว่าจะสามารถสำรองข้อมูลไปยังที่จัดเก็บข้อมูลถาวรและประมวลผลในหน่วยความจำได้หากจำเป็น ในกรณีส่วนใหญ่ RocksDB ใช้เพื่อยืนยันข้อมูลถาวร และในหลายกรณี ข้อมูลจะถูกจัดเก็บไว้ในสื่อถาวร

ข้อดีของ Redis กับ RocksDB คืออะไร? ที่เก็บข้อมูล Redis เป็นที่เก็บข้อมูลเสมือนในหน่วยความจำที่คล้ายกับ Memcached ที่เก็บคีย์/ค่าแบบฝังตัวของ RocksDB ช่วยให้คุณอ่านแผนผังการผสานแบบมัลติเธรดและโครงสร้างล็อกได้ เนื่องจาก Redis มีประสิทธิภาพและปรับขนาดได้ (ยกเว้น CPU) จึงไม่มีขีดจำกัดในการปรับขนาด แม้ว่า Redis ดูเหมือนจะเร็วกว่า แต่ประเด็นของ OP ก็คือตามที่เขากล่าวไว้ ชุดข้อมูลของคุณไม่จำเป็นต้องถูกจำกัดด้วยจำนวนหน่วยความจำที่มีอยู่ในแอปพลิเคชันของคุณ ในบางกรณี คุณสามารถใช้ LedisDB และไลบรารีไคลเอ็นต์ Redis เดียวกันเพื่อแทนที่ Redis ซึ่งเกือบจะลดลงในบัคเก็ต

Rocksdb จัดจำหน่ายหรือไม่?

RocksDB เป็นฐานข้อมูลแบบกระจายที่ช่วยให้ปรับขนาดพื้นที่จัดเก็บและประสิทธิภาพในแนวนอนได้ ได้รับการออกแบบมาเพื่อให้มีความพร้อมใช้งานและประสิทธิภาพสูงด้วยโมเดลการปรับใช้ที่เรียบง่าย

ที่เก็บคีย์-ค่าของ ChakrDB (KVS) ใช้ RocksDB และเหมาะสำหรับระดับเพตะไบต์ไปจนถึงระดับเทราไบต์หลายสิบ สถาปัตยกรรมที่ใช้โหนด (vNodes) ใช้ในการชาร์ด ChakrDB vNodes รองรับทั้งไดรฟ์ข้อมูลระบบไฟล์ ext4 ที่สร้างขึ้นโดยการกำหนดค่าระบบไฟล์ภายในของ Kubernetes และ Nutanix BlockStore RocksDB ซึ่งเป็น KVS ที่อิงตามแผนผังการผสานโครงสร้างบันทึก (LSM) เป็นซอฟต์แวร์ที่อยู่เบื้องหลัง ChakrDB โครงสร้างข้อมูลของ LSM ทำงานได้ดีกับอุปกรณ์ NVMe เช่นเดียวกับ SSD ChakrDB สามารถเรียกใช้บนดิสก์ เครื่องเสมือน และใน Azure ที่หลากหลายโดยใช้ Kubernetes เนื่องจากมันถูกบรรจุ โปรแกรมคอนเทนเนอร์ของ ChakrDB จึงสามารถรันบนสภาพแวดล้อม K8s ใดก็ได้ในพ็อด

แพลตฟอร์มสามารถโฮสต์บนบริการพื้นที่เก็บข้อมูลแบบกระจายของ Nutanix (ไม่ว่าจะเป็น Azure หรือ AWS) หรือผู้ให้บริการพื้นที่เก็บข้อมูลบนคลาวด์ Chakr Cluster Manager รับผิดชอบการควบคุมปริมาณการใช้ระนาบทั้งหมดในคลัสเตอร์ วัตถุประสงค์ของ chharDB คือเพื่อให้ประสิทธิภาพและขนาด ด้วย vNode จะสร้างสถาปัตยกรรมชาร์ดดิ้งที่กระจาย I/O ข้าม อินสแตนซ์ RocksDB หลายตัว เพื่อปรับปรุงการทำงานแบบคู่ขนานและทรูพุตการเขียน Nutanix Objects เป็นตัวอย่างของบริการ stateful ที่สามารถรันในโหมดเอ็มเบ็ดเด็ดหรือรีโมตด้วย chacherDB ให้บริการ MetadataService ด้วยความสามารถในการรักษาเลเยอร์แคชในขณะที่ยังรับประกันความสม่ำเสมอในการอ่านหลังจากอ่าน เราสามารถดูปริมาณงานที่เราได้รับจากการปรับขนาดอินสแตนซ์ ChakrDB เชิงเส้นในกราฟด้านล่าง

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

Rocksdb: เครื่องมือจัดเก็บข้อมูลที่รวดเร็วสำหรับฐานข้อมูล

ตรงกันข้ามกับ Linux และ Apache RocksDB ไม่ใช่ระบบแบบกระจายที่มีแผนการกู้คืนระบบ เนื่องจากมีความพร้อมใช้งานต่ำ และเนื่องจากขาดกลไกการจำลองข้อมูลที่รัดกุม จึงไม่มีความจุมากนัก อย่างไรก็ตาม ฐานข้อมูลที่ได้รับความนิยมมากที่สุดในโลกบางแห่งยังคงใช้ฐานข้อมูลนี้ต่อไป LevelDB ซึ่งมีเครื่องมือฐานข้อมูลที่รวดเร็วอยู่แล้ว ทำให้ RocksDB เป็น เครื่องมือจัดเก็บข้อมูลในอุดมคติ ความสามารถของ LevelDB ในการปรับขนาดเพื่อจัดการข้อมูลจำนวนมากในขณะที่ใช้พื้นที่จัดเก็บที่รวดเร็วเป็นสินทรัพย์ที่สำคัญ นอกจากนี้ RocksDB ยังมีความสามารถในการสร้างสรรค์สิ่งใหม่ๆ ข้อมูลสามารถจัดเก็บได้หลายวิธีด้วย RocksDB รวมถึง IO-bound, ในหน่วยความจำ หรือเขียนเพียงครั้งเดียว ด้วยเหตุนี้ จึงเป็นตัวเลือกที่ดีมากสำหรับฐานข้อมูลที่มีความต้องการพื้นที่จัดเก็บสูง ซึ่งไม่ต้องการลดประสิทธิภาพหรือความพร้อมใช้งานของข้อมูล


ทางเลือก Rocksdb

มีทางเลือกอื่นมากมายสำหรับ Rockdb ที่มีให้เลือก ขึ้นอยู่กับความต้องการเฉพาะที่คุณมี ทางเลือกที่ได้รับความนิยม ได้แก่ hbase, leveldb และ berkeley db

ในปี 2022 SourceForge ได้จัดอันดับให้ RocksDB เป็นทางเลือกที่ดีที่สุดสำหรับ Linux ด้วย ApsaraDB สำหรับ Redis เราสามารถอ่านข้อมูลจากแคชในหน่วยความจำด้วยความเร็วสูง ทำให้มั่นใจได้ว่าข้อมูลคงอยู่และใช้หน่วยความจำและที่เก็บข้อมูลฮาร์ดไดรฟ์ในกระบวนการ ตั้งแต่ปี 2009 Tair ทำหน้าที่เป็นผู้ให้บริการแคชข้อมูลอย่างเป็นทางการสำหรับกลุ่มอาลีบาบา และประสิทธิภาพการทำงานในสถานการณ์แคชข้อมูล เช่น เทศกาลช้อปปิ้ง 11 คู่ก็ได้รับการยอมรับ การตอบสนองต่อคำขอเข้าถึงข้อมูลที่มีเวลาแฝงต่ำของ Tanzu GemFire ​​ทำให้แอปพลิเคชันสามารถส่งคืนข้อมูลใหม่ได้เสมอ Google Cloud Bigtable เป็นบริการฐานข้อมูล NoSQL ที่มีการจัดการเต็มรูปแบบ ซึ่งสร้างขึ้นสำหรับปริมาณงานที่ต้องใช้ข้อมูลการวิเคราะห์และการดำเนินงานตามเวลาจริง Amazon DynamoDB สามารถรองรับคำขอได้มากกว่า 10 ล้านล้านคำขอต่อวัน และรองรับการรับส่งข้อมูลสูงสุดมากกว่า 20 ล้านคำขอต่อวินาที BergDB เป็นฐานข้อมูล NoSQL เชิงเอกสารแบบไร้สคีมาแบบฝังตัวซึ่งเป็นโอเพ่นซอร์สและใช้งานได้ฟรี

คุณสมบัติที่หลากหลาย เช่น การจัดเก็บคีย์-ค่าอย่างง่าย ธุรกรรม ACID การสืบค้นประวัติ การควบคุมการทำงานพร้อมกัน การจัดเก็บแบบต่อท้ายเท่านั้นที่รวดเร็ว การจำลองแบบ ตัวระบุวัตถุโปร่งใส และอื่นๆ อีกมากมาย OrigoDB ช่วยให้คุณสร้างระบบที่มีความสำคัญต่อภารกิจและมีประสิทธิภาพสูงด้วยต้นทุนเพียงเล็กน้อย ส่งผลให้มีความสามารถในการจัดการข้อมูลในหน่วยความจำอย่างเต็มรูปแบบ รวมถึงความสามารถในการจัดการฐานข้อมูลหลายฐานข้อมูลในเวลาเดียวกัน OrigoDB engine ตัวเดียวสามารถประมวลผลธุรกรรมการอ่านนับล้านรายการต่อวินาที ซอฟต์แวร์ Ignite สามารถใช้เพื่อพัฒนาแอปพลิเคชันใน Java, C#, C++, Python และภาษาโปรแกรมอื่นๆ คุณสามารถเข้าร่วม จัดกลุ่ม รวม และจัดลำดับข้อมูลบนเซิร์ฟเวอร์ในหน่วยความจำและบนดิสก์ได้อย่างรวดเร็วและง่ายดาย ฐานข้อมูล Ignite ของคุณสามารถแปลงเป็นซูเปอร์คอมพิวเตอร์แบบกระจายได้แล้ว

Oracle Autonomous Database ทำให้การจัดการฐานข้อมูลเชิงสัมพันธ์ง่ายขึ้น ในฐานะหนึ่งในการปรับใช้ที่ยืดหยุ่นที่สุด Redis Enterprise พร้อมใช้งานในรูปแบบไฮบริด InfinityDB Embedded ซึ่งเป็นฐานข้อมูล Java NoSQL มีลำดับชั้นแบบลำดับชั้นสำหรับจัดเก็บเร็กคอร์ดค่าคีย์ ประสิทธิภาพ ความยืดหยุ่น และลักษณะที่ไม่ต้องบำรุงรักษาของระบบทำให้เหมาะสำหรับการใช้งานที่มีประสิทธิภาพสูง มัลติคอร์ ยืดหยุ่น และไม่ต้องบำรุงรักษา LeanXcale เป็นฐานข้อมูลที่รวดเร็วและ ปรับขนาดได้ ซึ่งรวม SQL และ NoSQL เข้าด้วยกันในลักษณะที่ทำให้ทั้งสองทำงานร่วมกันได้ดี เครื่องมือจัดเก็บข้อมูล KiVi สร้างขึ้นเพื่อจัดเก็บข้อมูลในรูปแบบเชิงสัมพันธ์ ModJS ให้คุณเขียนฟังก์ชันจาวาสคริปต์ที่คุณสามารถเรียกได้โดยตรงจาก KeyBD

ที่เก็บข้อมูลในหน่วยความจำยอดนิยมสามารถตั้งค่า เรียกใช้ และปรับขนาดได้อย่างง่ายดายด้วย Amazon ElastiCache การแคช ร้านค้าเซสชั่น เกม บริการ psyg การวิเคราะห์ตามเวลาจริง และการแคช เป็นเพียงกรณีการใช้งานตามเวลาจริงเพียงไม่กี่กรณีที่มีใน Amazon ElastiCache ด้วยไลบรารีและเซิร์ฟเวอร์ฐานข้อมูล NoSQL ที่มีประสิทธิภาพสูง Go จึงเป็นตัวเลือกที่ดีที่สุดสำหรับการพัฒนา Ledisdb OrientDB เป็นฐานข้อมูลกราฟที่เร็วที่สุดในตลาด ปรับปรุงความได้เปรียบในการแข่งขันและเร่งสร้างนวัตกรรมด้วยแหล่งรายได้ใหม่ ฐานข้อมูล Macrometa NoSQL เป็นแบบไร้เซิร์ฟเวอร์และใช้เอ็นจิ้นการสตรีม ทำให้สามารถประมวลผลและคำนวณข้อมูลด้วยความเร็วสูง Memorystore ทำงาน Redis และ Memcached ที่ซับซ้อนโดยอัตโนมัติ เช่น ความพร้อมใช้งานสูง เฟลโอเวอร์ การแพตช์ และการตรวจสอบ

ฐานข้อมูลประสิทธิภาพ สูงเช่น upscaledb ใช้ประโยชน์จากการจัดเก็บคีย์-ค่าที่รวดเร็วและอัลกอริทึมเพื่อเพิ่มการใช้งานสูงสุด UpscaleDB เป็นมาตรฐานโอเพ่นซอร์สที่สามารถสแกนมากกว่า 50 ล้านบันทึกและดึงข้อมูลได้มากที่สุด แพลตฟอร์ม Tablestore ช่วยให้ข้อมูลเติบโตและขยายการทำงานพร้อมกันได้อย่างราบรื่นโดยใช้ data sharding และเทคโนโลยี load balancer ของเซิร์ฟเวอร์ InsightEdge เป็นผู้ให้บริการการวิเคราะห์ที่เปิดใช้งานการวิเคราะห์ตามเวลาจริงสำหรับการสตรีมข้อมูลที่มีโครงสร้างในอดีต ด้วยการใช้วิธีการเรียกเก็บเงินแบบจ่ายตามการใช้งานจริงของบริการนี้ คุณจะมั่นใจได้ว่าระบบควบคุมความเสี่ยงของคุณยังคงทำงานได้อย่างมีประสิทธิภาพสูงสุด ฐานข้อมูล ScyllaDB ได้รับการออกแบบมาสำหรับแอปพลิเคชันที่ต้องใช้ข้อมูลมาก โดยมีประสิทธิภาพสูงและมีความหน่วงต่ำ ScyllaDB ถูกใช้โดยบริษัทที่เปลี่ยนแปลงเกมกว่า 400 แห่ง เช่น Disney, Expedia, FireEye, Discord, Zillow, Starbucks, Comcast และ Samsung

เมื่อคุณต้องการความสามารถในการปรับขนาดและความพร้อมใช้งานสูง ฐานข้อมูล Apache Cassandra เป็นตัวเลือกที่ดี ตารางข้อมูล Hazelcast ที่อิงตามแพลตฟอร์มการจัดเก็บและจัดการข้อมูล Infinispan แบบโอเพ่นซอร์ส มอบชุดความสามารถที่แข็งแกร่งสำหรับการจัดเก็บ จัดการ และประมวลผลข้อมูล ข้อมูลหลายมิติถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของ InterSystems IRIS โดยใช้ชุดของ API ที่อนุญาตให้ดำเนินการพร้อมกันกับคีย์-ค่า เชิงสัมพันธ์ อ็อบเจ็กต์ เอกสาร และข้อมูลธุรกรรมถาวรอื่นๆ FairCom DB เป็นแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์ที่เปิดใช้งานธุรกรรมปริมาณมากในลักษณะที่คาดการณ์ได้และการประมวลผลข้อมูลขนาดใหญ่แบบคู่ขนาน เป็นเอ็นจิ้นฐานข้อมูลขั้นสูงที่ให้การควบคุมที่ต่อเนื่องและเป็นต้นทุนรวมในการเป็นเจ้าของ (TCO) ที่ต่ำที่สุดในบรรดาเอ็นจิ้นฐานข้อมูลทั้งหมด แคชคือระบบการจัดการฐานข้อมูลแบบหลายโมเดล (ออบเจ็กต์ เชิงสัมพันธ์ คีย์-ค่า) และเซิร์ฟเวอร์แอปพลิเคชันที่สร้างโดย InterSystems การใช้ Ehcache เป็นไคลเอนต์ช่วยเพิ่มประสิทธิภาพ ลดปริมาณงานฐานข้อมูล และลดความซับซ้อนของการปรับขยายโดยใช้แคชที่ใช้มาตรฐานโอเพ่นซอร์ส

ที่เก็บข้อมูลใน IBM Cloud Databases เป็นแพลตฟอร์มซอฟต์แวร์โอเพ่นซอร์สฟรีสำหรับการพัฒนาแอปพลิเคชันระดับองค์กร ด้วยเฟรมเวิร์กที่สร้างขึ้นบนแพลตฟอร์ม microservices พวกเขาเปิดใช้งานแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ โวลเดอมอร์ไม่พยายามตอบสนองความสัมพันธ์ตามอำเภอใจหรือตอบสนองคุณสมบัติของกรดในฐานข้อมูลเชิงสัมพันธ์ คลัสเตอร์ถูกกำหนดเป็นกริดโดยใช้การสื่อสารแบบหลายผู้รับ XAP ซึ่งเป็นกริดข้อมูลในหน่วยความจำจาก GigaSpaces ได้รับการออกแบบสำหรับการประมวลผลธุรกรรมและสตรีมขั้นสูงสำหรับแอปพลิเคชันที่มีความสำคัญต่อภารกิจด้วยประสิทธิภาพสูง ความยืดหยุ่น และความหน่วงต่ำเป็นพิเศษ FoundationDB สามารถเรียกใช้ข้อมูลขนาดใหญ่จำนวนมากบนฮาร์ดแวร์สินค้าโภคภัณฑ์ด้วยต้นทุนที่ต่ำ เนื่องจากเซิร์ฟเวอร์เครือข่าย Kyoto Tycoon มีน้ำหนักเบา จึงเข้ากันได้กับทั้งฐานข้อมูลคีย์-ค่าของ Kyoto Cabinet และเซิร์ฟเวอร์เครือข่าย Kyoto Tycoon

อัปสตรีมรีลีสล่าสุดได้รับการปรับปรุง และมีวัตถุประสงค์เพื่อใช้ร่วมกันและทดสอบในสภาพการผลิตจริง การแก้ไขจุดบกพร่อง คุณลักษณะใหม่เล็กน้อย และการอัปเดตแพ็คเกจการแจกจ่าย Linux บางส่วนเป็นการปรับปรุงบางส่วน ตอนนี้คุณสามารถจัดเก็บแอปพลิเคชัน เอกสาร และข้อมูลอื่นๆ ที่คุณใช้บ่อยในอุปกรณ์ที่เร็วกว่าได้แล้ว สามารถเข้าถึงได้ด้วยความเร็วเทียบเท่ากับ RAM หรือ SSD คุณสามารถใช้ Memcached เพื่อนำหน่วยความจำจากส่วนต่าง ๆ ของคอมพิวเตอร์ที่คุณต้องการหน่วยความจำมากเกินกว่าที่จะสามารถจัดการได้ มาตรฐานแบบเปิดและเอ็นจิ้น SQL ที่แข็งแกร่งรวมกันเพื่อสร้าง เฟรมเวิร์ก NoSQL ที่แข็งแกร่ง ไม่เหมือนใคร Amadeus, American Express, Carrefour, Cisco, Comcast/Sky, Disney, eBay, LinkedIn, Marriott, Tesco, Tommy Hilfiger, United, Verizon และบริษัทอื่นๆ อีกหลายร้อยแห่งใช้แพลตฟอร์มนี้

Rocksdb เร็วไหม

พื้นที่จัดเก็บข้อมูลที่รวดเร็วและมีความหน่วงต่ำ เช่น แฟลชไดรฟ์และดิสก์ความเร็วสูง เหมาะอย่างยิ่งสำหรับ RocksDB ด้วย RocksDB คุณสามารถใช้ประโยชน์จากหน่วยความจำและความสามารถในการอ่าน/เขียนของแฟลชและ RAM ได้อย่างเต็มที่

Badger เป็นทางเลือกที่รวดเร็วกว่าสำหรับการจัดเก็บข้อมูลในฐานข้อมูลกราฟ

สำหรับการจัดเก็บข้อมูลในฐานข้อมูลกราฟ ไลบรารี Badger เป็นทางเลือกที่เร็วกว่า RocksDB เนื่องจากแผนผัง LSM มีคีย์จำนวนมาก จำนวนคีย์ที่มากขึ้นจึงมีโอกาสน้อยที่จะส่งผลให้เกิดการบดอัด นอกจากนี้ RocksDB ยังจัดเก็บข้อมูลสำหรับการอ่านและเขียนในหน่วยความจำ การบัฟเฟอร์การอ่านขาเข้า

Rocksdb แบบกระจาย

RocksDB เป็นฐานข้อมูลฝังตัวประสิทธิภาพสูงสำหรับข้อมูลคีย์-ค่า ซึ่งเขียนด้วยภาษา C++ และมี API ที่เรียบง่ายแต่ทรงพลัง RocksDB จัดเก็บข้อมูลในรูปแบบโครงสร้างบันทึก ทำให้มีประสิทธิภาพทั้งในแง่ของพื้นที่ดิสก์และประสิทธิภาพการอ่าน RocksDB เป็นตัวเลือกที่ยอดเยี่ยมสำหรับแอปพลิเคชันที่ต้องการเวลาแฝงต่ำและปริมาณงานสูง

ที่เก็บข้อมูลที่ไม่มีโครงสร้างที่เรียกว่า chkrDB ได้รับการออกแบบมาเพื่อใช้ประโยชน์จากโครงสร้างบนคลาวด์โดยการสร้างที่จัดเก็บคีย์-ค่าแบบกระจาย (KVS) แอปพลิเคชันข้อมูลสมัยใหม่ต้องปฏิบัติตามกฎบางอย่างเพื่อให้ทำงานในระบบคลาวด์สาธารณะหรือส่วนตัว โดยทั่วไป แอปพลิเคชันที่พร้อมใช้งานบนคลาวด์ต้องการมาตรฐาน API แบบโอเพ่นซอร์ส จุดสิ้นสุดพื้นที่จัดเก็บ iSCSI มาตรฐาน และปริมาณงานคอนเทนเนอร์ เช่น Docker พื้นที่จัดเก็บบนคลาวด์และ Kubernetes ได้ให้บริการพื้นที่จัดเก็บที่ขยายขนาด ความพร้อมใช้งาน และความสอดคล้องในแง่ของการประมวลผลและพื้นที่จัดเก็บแล้ว KVS แบบกระจายแบบดั้งเดิมจะจำลองข้อมูล ดำเนินการปริมาณงานที่ใช้งานอยู่ ย้ายข้อมูล และรับประกัน HA และความยืดหยุ่น เมื่อเราใช้โครงสร้างพื้นฐานระบบคลาวด์ที่มีความพร้อมใช้งานสูง เราสามารถลบความซับซ้อนบางส่วนที่เกี่ยวข้องกับการจำลองแบบ HA และการปรับขนาดไปยังแพลตฟอร์มระบบคลาวด์พื้นฐานได้อย่างง่ายดาย Open-sourceDBs ส่วนใหญ่ไม่เป็นไปตามข้อกำหนดทั้งหมดที่ระบุไว้ข้างต้น รวมถึงเวลาแฝงต่ำและปริมาณงานสูง

ระบบสตอเรจประสิทธิภาพ สูงจำเป็นต้องมี KVS แบบกระจายที่มีน้ำหนักเบามาก ซึ่งสามารถปรับขนาดไฟล์ได้เป็นจำนวนมากที่สุดในเวลาเดียวกัน เราตัดสินใจใช้ Cassandra เวอร์ชันแยก ซึ่งเราใช้มาแปดปีก่อนหน้านี้ พื้นที่จัดเก็บขอบเขตอัตโนมัติ (AES) ของ Nutanix ซึ่งเป็นฐานข้อมูลเมตาดาต้าในดิสก์ AOS แสดงให้เห็นถึงผลลัพธ์ด้านประสิทธิภาพที่คาดหวังในระหว่างช่วงการทดสอบ แม้ว่าข้อเท็จจริงที่ว่า RocksDB จะสามารถจัดเก็บข้อมูลจำนวนมากได้ แต่ก็ต้องใช้หน่วยความจำค่อนข้างน้อย เนื่องจากเราสามารถฝัง RocksDB ในกระบวนการอื่นๆ ได้ เราจึงมีข้อได้เปรียบที่สำคัญในด้านเวลาแฝงและปริมาณงาน ด้วยการออกแบบแบบกระจายบนคลาวด์ ธรรมชาติที่พร้อมใช้งานสูง และคุณสมบัติประสิทธิภาพสูง ChahalDB จึงเป็น KVS ที่ยอดเยี่ยมกับ RocksDB แบ็กเอนด์ RocksDB Env ยังช่วยให้คุณเชื่อมต่อกับเลเยอร์พื้นที่เก็บข้อมูลอื่นๆ ส่วนที่สองของซีรีส์นี้จะครอบคลุมถึงสถาปัตยกรรมของ KVS แบบกระจายของ ChakrDB และทบทวนว่าเหตุผลและทฤษฎีพัฒนาไปสู่ความเป็นจริงได้อย่างไร

Rocksdb กับ Sqlite

SQLite และ RocksDB ใช้ในฐานข้อมูลเป็นหลัก เหตุผลหลักที่นักพัฒนาเลือก RocksDB มากกว่า SQLite คือเป็นมิตรกับผู้ใช้มากกว่า ในขณะที่น้ำหนักเบาถือเป็นปัจจัยสำคัญ RocksDB ซึ่งเป็นโครงการโอเพ่นซอร์สมีจำนวนดาว GitHub ที่ 14.1K และ GitHub Forks ที่ 3.09K

อะไรคือความแตกต่างระหว่าง RocksDB และ SQLite? SQLite น่าจะเป็นสิ่งที่แย่ที่สุดในบรรดาผู้สมัครที่แย่ที่สุดเมื่อพูดถึงความสัมพันธ์ของเซิร์ฟเวอร์กับไคลเอ็นต์ (ฐานข้อมูลกลาง) ในขณะที่ RocksDB เป็นความสัมพันธ์ของเซิร์ฟเวอร์กับไคลเอ็นต์ ( ฐานข้อมูลกลาง ) Firebase ไม่มีอะไรใหม่เนื่องจากเป็นแอปพลิเคชันที่โฮสต์โดยธุรกิจมากกว่าบริการ แม้ว่าจะมีข้อเสียเล็กน้อย แต่ประโยชน์ก็มีมากมาย ด้วยเหตุนี้ คุณจะต้องสร้างเซิร์ฟเวอร์ แอปไคลเอ็นต์ และฐานข้อมูล ซึ่งอาจเป็น Javascript ที่มี REST API แบบ Express บน Node.js หรือ Javalin ที่มีฐานข้อมูล ObjectDB ในตัวสำหรับการจัดเก็บฐานข้อมูล ต้นทุนเริ่มต้นอาจมีตั้งแต่ต่ำไปจนถึงศูนย์ แม้ว่าคุณจะต้องเรียนรู้ API ของ Firebase แต่ฉันคิดว่า Firebase เป็นตัวเลือกที่ดีกว่า

Rocksdb โกลัง

RocksDB เป็นฐานข้อมูลคีย์-ค่าที่พัฒนาโดย Facebook ซึ่งเขียนด้วยภาษา C++ และเชื่อมโยงกับภาษาโปรแกรมต่างๆ รวมทั้ง Go
RocksDB ได้รับการออกแบบมาให้ปรับขนาดได้และมีประสิทธิภาพ สามารถใช้เป็นฐานข้อมูลแบบสแตนด์อโลนหรือเป็นส่วนหนึ่งของระบบที่ใหญ่กว่าได้ RocksDB ถูกใช้โดยบริษัทขนาดใหญ่หลายแห่ง รวมถึง Facebook, Google และ Microsoft

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

CompactRange ทำการบีบอัดด้วยตนเองในช่วงของปุ่มเมื่อใช้โหมดการบีบอัดด้วยตนเอง GetApproximateSizes คำนวณขนาดของระบบไฟล์เป็นไบต์สำหรับแต่ละช่วงคีย์ที่ใช้ PropertyValue ส่งคืนค่าของคุณสมบัติฐานข้อมูลอันเป็นผลมาจากเมธอด property() ใส่เขียนข้อมูลที่เกี่ยวข้องกับคีย์ฐานข้อมูล หากมีการส่งผ่านค่า nil [] ไบต์ เศษของศูนย์ [] ไบต์จะถูกส่งคืน เป็นสภาพแวดล้อมการเรียกฐานข้อมูลที่ใช้ในการเรียกระบบ เมื่อโปรแกรมไม่ต้องการ Envs อีกต่อไป จำเป็นต้องมีการปิดการโทรเพื่อป้องกันการรั่วไหลของหน่วยความจำ

มันจะส่งคืนข้อผิดพลาดหากข้อผิดพลาด LevelDB เกิดขึ้นระหว่างเหตุการณ์ GetError ผลตอบแทนจะเป็นศูนย์สำหรับตัววนซ้ำที่ไม่ถูกต้อง เมื่อปิดการจัดสรรคืนค่า Iterator ที่กำหนด จะทำให้โครงสร้าง C พื้นฐานว่าง เมื่อโปรแกรมไม่ได้ใช้ Iterator อีกต่อไป สิ่งสำคัญคือต้องเปิดใช้งาน Close เพื่อป้องกันการรั่วไหลของหน่วยความจำ เมื่อเปิดฐานข้อมูล SetCache จะจัดเก็บวัตถุแคชไว้ในฐานข้อมูล เมื่อใช้ setCompression อัลกอริทึมการบีบอัดที่ระบุโดย SetCompression จะกำหนดบล็อกที่สามารถบีบอัดได้ เมื่อใช้ SetFilterPolicy Open จะสร้างฐานข้อมูลใหม่พร้อมระบุนโยบายตัวกรอง

SetInfoLog ระบุวัตถุ *Crocksdb_logger_t เป็นตัวบันทึกภายในของฐานข้อมูล สามารถใช้ SetFillCache เพื่อกำหนดว่าการอ่านที่ดำเนินการด้วย ReadOptions นี้จะเติมแคชของเซิร์ฟเวอร์หรือไม่ เมื่อสร้างสแนปชอต สาเหตุที่อ่านโดย SetSnapshot จะเหมือนกับที่สร้างโดยสแนปชอต วิธีนี้สามารถใช้เพื่อให้แน่ใจว่าการอ่านทุกครั้งสอดคล้องกันระหว่างข้อมูลจำนวนมาก ชุดการใส่และการลบแบบ WriteBatch จะต้องเก็บไว้ในฐานข้อมูลก่อนที่จะถูกเขียนในระดับอะตอม WriteBatch ถูกเขียนทันทีที่ส่งไปยังฐานข้อมูล หากโปรแกรมไม่ต้องการวัตถุ WriteBatch อีกต่อไป ขอแนะนำให้ปิด

Puts and Deletes ที่อยู่ในคิวทั้งหมดถูกลบไปแล้ว เมื่อการปิดการคืนค่าจัดสรร WriteOptions โครงสร้าง C พื้นฐานนั้นสามารถดำเนินการได้ฟรี SetSync กำหนดว่าการเขียนตัวเลือกการเขียนแต่ละครั้งจะถูกล้างออกจากแคชบัฟเฟอร์ของระบบปฏิบัติการหรือไม่ ก่อนที่การเขียนจะถือว่าเสร็จสมบูรณ์ หากดำเนินการโดยใช้สคริปต์ตัวเลือกการเขียน

Rocksdb: ที่เก็บคีย์-ค่าแบบฝังได้สำหรับแอปพลิเคชันที่ผู้ใช้เผชิญหน้า

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

การดำเนินการของ Rocksdb

การใช้งาน RocksDB นั้นมีประสิทธิภาพมาก ใช้ Log Structured Merge Tree (LSM tree) เพื่อจัดเก็บข้อมูล ซึ่งช่วยให้สามารถแทรกและลบได้อย่างรวดเร็ว นอกจากนี้ RocksDB ยังบีบอัดข้อมูลเพื่อประหยัดพื้นที่

เราจะพูดถึงวิธีการใช้ RocksDB ที่ Rockset ในบล็อกโพสต์นี้ รวมถึงวิธีปรับแต่งเพื่อให้ได้ประสิทธิภาพสูงสุด เมื่อพูดถึง Rockset เราต้องการให้ผู้ใช้ของเราสามารถสืบค้นข้อมูลได้ใน 10 วินาทีของมิลลิวินาทีด้วยเวลาแฝงรองและนำเข้าข้อมูลอย่างต่อเนื่อง RocksDB ถูกใช้ในการผลิตที่ Facebook, LinkedIn, Uber และบริษัทอื่นๆ RocksDB เก็บข้อมูลคีย์-ค่าในรูปแบบของคีย์แบบฝัง ใน 1 อินสแตนซ์ RocksDB ข้อมูลจะไม่ถูกถ่ายโอนไปยังเครื่องอื่น มันถูกสร้างมาให้ใช้งานได้นานและได้รับการออกแบบโดยความร่วมมือกับ RocksDB-Cloud ความล้มเหลวของเครื่องทำให้ RocksDB ไม่สามารถกู้คืนได้

ด้วยเหตุนี้ จึงไม่สามารถใช้บันทึกการเขียนล่วงหน้าของ RocksDB ได้ เนื่องจาก RocksDB ถูกเขียนขึ้นในหน่วยความจำ การเขียนทั้งหมดของเราจึงมีโครงสร้างเดียวกัน ชุดการเขียนที่มีอาร์เรย์ของการอัปเดตแต่ละชุดใน WriteBatch ส่งผลให้เกิดปริมาณงานเขียนที่สูงขึ้นสำหรับ RocksDB; และคีย์เดียวในชุดการเขียนจะถูกจัดเรียงเป็นหลายคีย์ ก่อนที่จะเขียนการอัปเดตไปยัง RocksDB เราจะแบทช์ออกเป็นไมโครแบทช์ขนาด 100KB แล้วจัดเรียง ใน RocksDB ขนาดเป้าหมายสำหรับแต่ละระดับสามารถกำหนดแบบไดนามิกตามขนาดของระดับสุดท้าย ณ จุดนั้น ข้อมูลจากระดับ L0 และ L1 มีจำกัดมากเมื่อเทียบกับระดับอื่นๆ ในแผนผัง LSM ต้องเข้าถึงไฟล์ทั้งหมดใน L1 ระหว่างการบีบอัดจาก L0 ถึง L1 จำเป็นต้องมีการสร้างตัววนซ้ำจำนวนมากสำหรับการสืบค้นที่ทำการสแกนช่วงหรือดึงข้อมูลฟิลด์จำนวนมาก Iterators ไม่ได้รับอนุญาตให้นำมาใช้ซ้ำในแบบสอบถามใน freepool ที่พวกเขาอยู่

การเปรียบเทียบฐานข้อมูล Datamation Cloud

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

Couchbase องค์กร

Couchbase Enterprise Edition คือ Couchbase Server รุ่นที่ครอบคลุมและมีประสิทธิภาพมากที่สุด ประกอบด้วยคุณสมบัติทั้งหมดของ Community Edition และเพิ่มคุณสมบัติระดับองค์กร เช่น Active-Active geo-replication และ cross-datacenter replication (XDCR) ตลอดจนการรักษาความปลอดภัยและการตรวจสอบที่ได้รับการปรับปรุง Couchbase Enterprise Edition มีให้บริการในสองระดับการสมัครสมาชิก: Standard และ Enterprise

Couchbase Server เป็นฐานข้อมูลแบบกระจายบนระบบคลาวด์ที่รวมความแข็งแกร่งของฐานข้อมูลเชิงสัมพันธ์เข้ากับพลังของ NoSQL บริการคลาวด์นี้มีให้บริการในรูปแบบคลาวด์สาธารณะ เช่นเดียวกับบนคลาวด์ส่วนตัวและคลาวด์แบบไฮบริด เวลาแฝงวัดเป็นมิลลิวินาทีโดยใช้สถาปัตยกรรมหน่วยความจำแรกของระบบ สำหรับแอปพลิเคชันที่มีความสำคัญต่อภารกิจ แพลตฟอร์ม Couchbase จะกำหนดนิยามใหม่ของเศรษฐศาสตร์ฐานข้อมูล โดยใช้วิธีการต่างๆ มากมาย เช่น คีย์-ค่า คำค้นหา และการค้นหา คุณสามารถสร้างแอปพลิเคชันที่น่าสนใจที่ทำงานบนแพลตฟอร์มต่างๆ ได้ SQL, สคีมา, ธุรกรรม และฟังก์ชันที่ผู้ใช้กำหนดเป็นเพียงส่วนหนึ่งของโครงสร้างที่คุ้นเคย นอกจากนี้ Couchbase ยังรองรับโครงสร้าง Schema แบบไดนามิกที่สามารถใช้เพื่อแมปบัคเก็ต ขอบเขต คอลเลกชัน และเอกสารกับ RDBMS

N1QL เป็นภาษาประกาศที่ช่วยให้นักพัฒนาแอปพลิเคชันสามารถค้นหา แปลง และจัดการข้อมูลในลักษณะที่แสดงออกชัดเจน ทรงพลัง และสมบูรณ์ เมื่อพูดถึงการปรับขนาดธุรกิจของคุณ ศูนย์ข้อมูลแบบหลายชั้นจะมอบสิ่งที่ดีที่สุดจากทั้งสองโลก: ช่วยให้คุณตอบสนองเวิร์กโหลดที่ต้องการมากที่สุดในแพลตฟอร์มเดียวโดยใช้การประมวลผล พื้นที่จัดเก็บ และการประมวลผลการแบ่งพาร์ติชันเวิร์กโหลด คุณสามารถจำลองข้อมูลของคุณทั่วทั้งศูนย์ข้อมูลได้อย่างง่ายดายเพื่อให้ตรงกับความต้องการของธุรกิจ ไม่ว่าจะเป็นความพร้อมใช้งานสูง การกู้คืนจากภัยพิบัติ หรือการจำลองแบบทั่วโลกที่ยืดหยุ่น มีฟีเจอร์การตรวจสอบในตัว รวมถึงการควบคุมการเข้าถึงตามบทบาทและการสื่อสารที่เข้ารหัส ข้อมูลของคุณจะปลอดภัยบนสายและในระบบคลาวด์

Couchbase: ฐานข้อมูล Nosql ยอดนิยม

ฐานข้อมูล NoSQL เช่น Couchbase เป็นตัวเลือกที่ยอดเยี่ยมสำหรับแอปพลิเคชันบนเว็บ อุปกรณ์พกพา และ Internet of Things (IoT) ที่หลากหลาย Couchbase เป็นผู้ให้บริการชั้นนำด้านโซลูชันบนคลาวด์ ให้บริการลูกค้ากว่า 2,000 รายจากสำนักงานใน 5 ประเทศ รวมถึง Emirates Airlines, Tommy Hilfiger, SyncThink, LinkedIn และ Marriott Hotels