ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis

Microsoft ได้โอเพ่นซอร์สระบบ NoSQL Garnet ซึ่งออกแบบมาเพื่อสร้างร้านค้าแคชและเข้ากันได้กับไลบรารีไคลเอนต์ที่มีอยู่สำหรับพื้นที่เก็บข้อมูล Redis Garnet รองรับการสร้างคลัสเตอร์แคชข้อมูลที่ปรับขนาดได้ ซึ่งสามารถใช้การจำลองแบบ การย้ายคีย์ และการแบ่งส่วนข้อมูลข้ามโหนดคลัสเตอร์ โปรเจ็กต์นี้เขียนด้วยภาษา C# โดยมีแกนหน่วยเก็บข้อมูลเป็นภาษา C++ เปิดภายใต้ใบอนุญาต MIT และสามารถทำงานได้บนทุกแพลตฟอร์มที่รองรับ .NET (แพลตฟอร์มหลักคือ Linux และ Windows)

ในการจัดเก็บข้อมูล มีการใช้กลไก Tsavorite (ทางแยกของที่เก็บข้อมูล Microsoft FASTER) ซึ่งรองรับการประมวลผลแบบสอบถามแบบมัลติเธรด ธุรกรรม การแก้ไขการเปลี่ยนแปลงในโหมดที่ไม่บล็อก (จุดตรวจสอบ) การกู้คืนจากความล้มเหลว บันทึกสำเนาที่ซ้ำซ้อนและการบำรุงรักษา บันทึกการดำเนินงาน กลไกเครือข่ายใน Garnet สร้างขึ้นโดยใช้สถาปัตยกรรมหน่วยความจำที่ใช้ร่วมกันที่เสนอโดยโครงการวิจัย ShadowFax การประมวลผล TLS และการโต้ตอบกับที่เก็บข้อมูลจะดำเนินการในเธรดเดียว ซึ่งทำให้สามารถหลีกเลี่ยงค่าใช้จ่ายในการสลับเธรด และใช้แคช CPU ได้อย่างมีประสิทธิภาพมากขึ้นเมื่อถ่ายโอนข้อมูลผ่านเครือข่าย

สถาปัตยกรรม Garnet แยกตรรกะสำหรับการแยกวิเคราะห์และประมวลผลคำขอจากการดำเนินการจัดเก็บข้อมูล ข้อมูลถูกจัดเก็บโดยใช้ที่เก็บคีย์-ค่าสองแห่งโดยอิงตามไลบรารี Tsavorite พื้นที่จัดเก็บ "หลัก" แห่งแรกได้รับการปรับให้เหมาะสมสำหรับการดำเนินการสตริงที่รวดเร็ว และที่จัดเก็บ "อ็อบเจ็กต์" แห่งที่สองได้รับการปรับให้เหมาะสมเพื่อรองรับอ็อบเจ็กต์ที่ซับซ้อนและประเภทข้อมูลขั้นสูง เช่น แฮชและรายการ ชนิดข้อมูลในที่จัดเก็บข้อมูลที่สองถูกนำมาใช้โดยใช้ไลบรารี .NET ข้อมูลถูกจัดเก็บไว้ในฮีป (ฮีป C#) ซึ่งช่วยให้อัปเดตได้อย่างมีประสิทธิภาพและอยู่ในรูปแบบซีเรียลไลซ์บนดิสก์

ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis

คุณสมบัติของโกเมน:

  • มีความเป็นไปได้ที่จะปรับใช้พื้นที่จัดเก็บข้อมูลแบบหลายชั้น ซึ่งครอบคลุม RAM, ไดรฟ์ SSD และพื้นที่จัดเก็บข้อมูลบนคลาวด์ ซึ่งข้อมูลที่มีความต้องการน้อยกว่าจะถูกผลักไปยังพื้นที่จัดเก็บข้อมูลที่ช้าเพื่อสร้างแคชที่มีขนาดใหญ่กว่า RAM
  • รองรับอุปกรณ์ที่ขยายได้ ช่วยให้สามารถสร้างเลเยอร์ที่ปรับให้เหมาะกับการทำงานกับอุปกรณ์ต่างๆ ได้ เช่น มีเลเยอร์สำหรับ SDD, ฮาร์ดไดรฟ์ และที่เก็บข้อมูลบนคลาวด์ Azure Storage
  • กลไกที่มีประสิทธิภาพสำหรับการนำพื้นที่ว่างใน RAM กลับมาใช้ใหม่ ป้องกันการแตกแฟรกเมนต์
  • ขีดจำกัดที่กำหนดได้เกี่ยวกับขนาดของหน่วยความจำที่ใช้สำหรับดัชนี บันทึก และการจัดเก็บอ็อบเจ็กต์
  • โปรโตคอล RESP ใช้เพื่อเข้าถึงที่เก็บข้อมูล ซึ่งอนุญาตให้ Garnet สามารถใช้กับไคลเอนต์ Redis ที่ยังไม่ได้แก้ไข
  • รองรับการจัดเก็บทั้งค่าสตริงและโครงสร้างข้อมูลที่ซับซ้อน เช่น รายการ แฮช ชุด รายการเรียงลำดับ และข้อมูลตำแหน่งทางภูมิศาสตร์ ความสามารถในการกำหนดอายุการใช้งานของคีย์
  • ความพร้อมใช้งานของ API สำหรับดำเนินการสืบค้นเชิงวิเคราะห์ (HLL/Hyperloglog, Bitmap), ธุรกรรม (MULTI/EXEC) และการใช้กระบวนทัศน์เผยแพร่/สมัครสมาชิก
  • ความพร้อมใช้งานของวิธีการสำหรับการควบคุมการเข้าถึงที่ยืดหยุ่นผ่าน ACL
  • ความสามารถในการกำหนดการกำหนดค่าในรูปแบบ JSON หรือ redis.conf
  • รองรับการเชื่อมต่อตัวจัดการเครือข่ายเพิ่มเติม ความสามารถในการเข้ารหัสการรับส่งข้อมูลโดยใช้ TLS (ขึ้นอยู่กับ SslStream)
  • ความสามารถในการสร้างส่วนขยายใน C# ที่ใช้การดำเนินการเพิ่มเติมกับสตริงและอ็อบเจ็กต์
  • รองรับขั้นตอนการจัดเก็บธุรกรรมที่ครอบคลุมหลายคีย์
  • ความสามารถในการเรียกคืนสถานะจากตำแหน่งที่บันทึกไว้ก่อนหน้านี้ (การกู้คืนจุดตรวจ) การมีอยู่ของโหมดไฟล์ต่อท้ายเท่านั้น (AOF, ไฟล์ต่อท้ายเท่านั้น) ซึ่งข้อมูลเก่าทั้งหมดยังคงอยู่และไม่ได้ถูกแทนที่
  • รองรับการสร้างคลัสเตอร์พื้นที่จัดเก็บข้อมูลด้วยการจำลองแบบ การแบ่งส่วน การย้ายคีย์แบบไดนามิกระหว่างโหนด และการกู้คืนโหนดที่ล้มเหลว
  • ประสิทธิภาพสูงและเวลาแฝงต่ำเมื่อดำเนินการค้นหา ประมวลผลคำขอกลุ่มเล็กๆ ได้อย่างมีประสิทธิภาพบนเซสชันไคลเอ็นต์จำนวนมาก ช่วยให้คุณบรรลุปริมาณงาน (จำนวนคำขอที่ประมวลผลต่อวินาที) ลำดับความสำคัญที่สูงกว่าโซลูชันของคู่แข่ง เมื่อทำงานในเครื่องเสมือนในระบบคลาวด์ Azure ในกรณีส่วนใหญ่ เวลาแฝงของไคลเอ็นต์จะไม่เกิน 300 ไมโครวินาที ในการทดสอบของเรา Garnet เหนือกว่า Redis, Dragonfly และ KeyDB อย่างมากในแง่ของประสิทธิภาพและการตอบสนอง ในการทดสอบบางอย่าง Garnet มีประสิทธิภาพเหนือกว่าระบบคู่แข่งถึงสิบเท่า
    ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis
    ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis
    ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis
    ที่เก็บข้อมูล Garnet แบบโอเพ่นซอร์สของ Microsoft เข้ากันได้กับ Redis

ที่มา: opennet.ru

เพิ่มความคิดเห็น