หมา
Dogpile ประกอบด้วยสองระบบย่อย โดยหนึ่งสิ่งปลูกสร้างอยู่เหนืออีกระบบหนึ่ง
dogpile
จัดเตรียมแนวคิดของ "dogpile lock" ซึ่งเป็นโครงสร้างการควบคุมที่อนุญาตให้เธรดเดียวของการดำเนินการสามารถเลือกเป็น "ผู้สร้าง" ของทรัพยากรบางอย่างได้ ในขณะที่อนุญาตให้เธรดการดำเนินการอื่น ๆ อ้างอิงถึงเวอร์ชันก่อนหน้าของทรัพยากรนี้เป็น ดำเนินการสร้าง; หากไม่มีเวอร์ชันก่อนหน้า เธรดเหล่านั้นจะบล็อกจนกว่าอ็อบเจ็กต์จะพร้อมใช้งาน
dogpile.cache
เป็น API การแคชที่ให้อินเทอร์เฟซทั่วไปสำหรับการแคชแบ็กเอนด์ที่หลากหลาย และยังมี API hooks ซึ่งรวมแบ็กเอนด์แคชเหล่านี้เข้ากับกลไกการล็อคของ dogpile
โดยรวมแล้ว dogpile.cache มีวัตถุประสงค์เพื่อแทนที่ระบบแคช Beaker ซึ่งภายในเขียนโดยผู้เขียนคนเดียวกัน แนวคิดทั้งหมดของ Beaker ซึ่ง "งาน" ถูกนำไปใช้ใหม่ใน dogpile.cache ในลักษณะที่มีประสิทธิภาพและกระชับยิ่งขึ้น และส่วนย่อยทั้งหมด (ข้อมูลภายในของ Beaker ถูกเขียนครั้งแรกในปี 2005) ก็ถูกผลักไสไปยังกองขยะ
เอกสารประกอบ
ดูเอกสารฉบับเต็มของ dogpile.cache ได้ที่เอกสาร dogpile.cache ส่วนด้านล่างนี้ให้ข้อมูลสรุปโดยย่อของแพ็คเกจ dogpile
คุณสมบัติ
- API สั้นๆ ที่สนับสนุนการกำหนดค่าล่วงหน้าของ "ภูมิภาค" ที่กำหนดไว้ล่วงหน้า โดยแต่ละรายการจะกำหนดชุดคุณลักษณะแคช รวมถึงแบ็กเอนด์พื้นที่เก็บข้อมูล ตัวเลือกการกำหนดค่า และเวลาหมดอายุเริ่มต้น
- มี API รับ/ตั้งค่า/ลบ มาตรฐาน รวมถึง API ตัวตกแต่งฟังก์ชันไว้ให้บริการ
- กลไกของการสร้างคีย์สามารถปรับแต่งได้อย่างเต็มที่ API ตัวตกแต่งฟังก์ชันมี "ตัวสร้างคีย์" ที่เสียบได้เพื่อปรับแต่งวิธีสร้างคีย์แคชให้สอดคล้องกับการเรียกใช้ฟังก์ชัน และฟีเจอร์ "ตัวจัดการคีย์" ที่เป็นตัวเลือกจะให้การเสียบคีย์ที่เสียบได้ (เช่น การเข้ารหัส การแฮช SHA-1) ตามความต้องการ สำหรับแต่ละภูมิภาค
- dogpile lock ได้รับการพัฒนาครั้งแรกในฐานะกลไกหลักที่อยู่เบื้องหลังระบบแคช Beaker ทำให้เรียบง่าย ปรับปรุง และทดสอบได้ดีขึ้นอย่างมาก ปัญหาด้านประสิทธิภาพที่สำคัญบางประการซึ่งอยู่ภายในสถาปัตยกรรมของ Beaker โดยเฉพาะอย่างยิ่งค่าที่มักจะถูก "ดึงข้อมูลสองครั้ง" จากแคช ได้รับการแก้ไขแล้ว
- แบ็กเอนด์ใช้เวอร์ชันการล็อก "แบบกระจาย" ของตัวเอง โดยที่ "การแจกจ่าย" ตรงกับระบบจัดเก็บข้อมูลของแบ็กเอนด์ ตัวอย่างเช่น แบ็กเอนด์ Memcached ช่วยให้ไคลเอ็นต์ทั้งหมดประสานการสร้างค่าโดยใช้ Memcached เองได้ แบ็กเอนด์ไฟล์ dbm ใช้ไฟล์ล็อคควบคู่ไปกับไฟล์ dbm แบ็กเอนด์ใหม่ เช่น แบ็กเอนด์ที่ใช้ Redis สามารถจัดเตรียมกลไกการล็อคของตัวเองที่เหมาะสมกับกลไกการจัดเก็บข้อมูลได้
- การเขียนแบ็กเอนด์ใหม่หรือการแฮ็กบนแบ็กเอนด์ที่มีอยู่นั้นมีจุดมุ่งหมายให้เป็นกิจวัตร - สิ่งที่จำเป็นต้องมีคือวิธีการรับ/ตั้งค่า/ลบพื้นฐาน การล็อคแบบกระจายที่ปรับให้เข้ากับแบ็คเอนด์เป็นทางเลือกเพิ่มเติม มิฉะนั้น dogpile จะใช้ mutex ของเธรดปกติ แบ็กเอนด์ใหม่สามารถลงทะเบียนกับ dogpile.cache ได้โดยตรงหรือเปิดให้ใช้งานผ่านจุดเข้าใช้งาน setuptools
- แบ็กเอนด์ที่รวมไว้มีแบ็กเอนด์ memcached สามรายการ (python-memcached, pylibmc, bmemcached), แบ็กเอนด์ Redis, แบ็กเอนด์ที่อิงตาม anydbm ของ Python และแบ็กเอนด์พจนานุกรมธรรมดา
- พื้นที่สำหรับปลั๊กอินของบุคคลที่สาม รวมถึงปลั๊กอินที่ให้กลไก dogpile.cache ให้กับเทมเพลต Mako
โครงการนักเล่นแร่แปรธาตุ SQL
Dogpile เป็นส่วนหนึ่งของโครงการ SQLAlchemy และปฏิบัติตามมาตรฐานและแบบแผนเดียวกันกับโครงการหลัก
การพัฒนา / การรายงานข้อผิดพลาด / คำขอดึง
โปรดดูคู่มือชุมชน SQLAlchemy สำหรับแนวทางในการเขียนโค้ดและการเข้าร่วมในโครงการนี้
หลักจรรยาบรรณ
เหนือสิ่งอื่นใด SQLAlchemy ให้ความสำคัญกับการสื่อสารที่สุภาพ รอบคอบ และสร้างสรรค์ระหว่างผู้ใช้และนักพัฒนา โปรดดูจรรยาบรรณปัจจุบันของเราที่จรรยาบรรณ
ใบอนุญาต
Dogpile ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT