โครงการมีชื่อสั้น ๆ Protobuf-Delphi และส่งบางส่วนของรหัสโครงการจากบัฟเฟอร์โปรโตคอลสำหรับ Java ในเวลานั้นโครงการนี้ดูเหมือนจะชัดเจนและสะอาดกว่าเมื่อเปรียบเทียบกับการใช้งานอื่น ๆ
โครงการสำหรับการแยกวิเคราะห์และการสร้างรหัสอยู่ระหว่างการก่อสร้าง ตอนนี้เราได้ย้ายไปยังขั้นตอนการสร้างรหัสแล้ว คุณสามารถส่งตัวอย่างรหัสและวิสัยทัศน์ของคุณ ความปรารถนาจะได้รับการพิจารณาและต้อนรับอย่างแน่นอน
เมื่อ Google อัปโหลดซอร์สโค้ดสำหรับบัฟเฟอร์โปรโตคอลไปยังโอเพ่นซอร์ส ฉันประหลาดใจกับความคิดที่อยู่เบื้องหลังความกะทัดรัดของข้อมูลและประสิทธิภาพความเร็วของการประมวลผลโดยเฉพาะอย่างยิ่งเมื่อเทียบกับ XML
เวอร์ชันแรกของพอร์ตบน Delphi จัดทำขึ้นในปี 2550 ในระหว่างโครงการงานหลักของฉัน ฉันต้องถ่ายโอนตารางขนาดใหญ่พร้อมข้อมูลไปยังแอปพลิเคชันไคลเอนต์ การดำเนินการนี้ช้า ภารกิจคือการเพิ่มความเร็วในการทำงานอย่างใด และลดจำนวนการรับส่งข้อมูลที่ส่งจากเซิร์ฟเวอร์ไปยังแอปพลิเคชันไคลเอนต์ผ่าน HTTPS ก่อนหน้านั้น XML ถูกใช้เพื่อวัตถุประสงค์เดียวกัน
หลังจากการเปลี่ยนรูปแบบข้อมูลบัฟเฟอร์โปรโตคอลเสร็จสิ้นแล้วมันก็เป็นไปได้ที่จะดาวน์โหลดข้อมูลมากขึ้นและเพิ่มประสิทธิภาพการผลิตอย่างมีนัยสำคัญ
ค่อนข้างเร็วมีการสร้างพอร์ตบน Delphi ซึ่งมีข้อ จำกัด ในการใช้งาน มีการใช้งานโปรโตคอลระดับต่ำที่มีการใช้งานไม่มีการสร้างรหัส แต่สิ่งนี้ไม่ได้ป้องกันเราจากการใช้งานในเว็บ-บริการและฟังก์ชั่นการใช้งานก็เพียงพอสำหรับโครงการ
การรู้โครงสร้างของข้อความเป็นไปได้ที่จะส่งและรับข้อมูลเกี่ยวกับโปรโตคอลนี้ หนึ่งปีต่อมาฉันวางรหัสบนเว็บไซต์ https://sourceforge.net/p/protobuf-delphi
อาจมีหลายคนที่น่าสนใจที่จะใช้สำหรับการจัดเก็บทั้งในดิสก์และภายในโปรแกรม
หากคุณรู้คุณสมบัติของการจัดเก็บข้อมูลทางกายภาพในบัฟเฟอร์โปรโตคอลคุณสามารถทำสิ่งที่น่าสนใจได้
ในตอนต้นของการบันทึกมีฟิลด์ที่เก็บความยาวของบันทึก คุณยังสามารถข้ามเขตข้อมูลบันทึกที่ไม่จำเป็นได้เสมอ ขึ้นอยู่กับประเภทที่พวกเขามีความยาวคงที่หรือหากฟิลด์มีความยาวตัวแปรดังนั้นจุดเริ่มต้นของฟิลด์จะมีความยาวของฟิลด์นี้ ดังนั้นจึงเป็นเรื่องง่ายที่จะแยกระเบียนออกจากกันและบางครั้งมันอาจเป็นประโยชน์ในการข้ามส่วนที่ไม่จำเป็นของบันทึก
ข้อมูลในต้นไม้สามารถจัดทำดัชนีโดยโครงสร้าง B-Tree หรือ HashMap เป็นต้น สิ่งนี้ช่วยให้คุณสามารถเข้าถึงบันทึกที่คุณกำลังมองหาได้อย่างรวดเร็ว
กระบวนการอ่านสามารถนำไปใช้กับบันทึกที่บรรจุเดียว
ข้อมูลในรูปแบบนี้มีการบีบอัดที่สำคัญ เมื่อเทียบกับการจัดเก็บวัตถุปกติในหน่วยความจำ:
ในโครงการของเราเราได้บันทึกการใช้หน่วยความจำจำนวนมาก เมื่อเทียบกับการจัดเก็บวัตถุปกติ ในบางกรณีกำไรคือ 20 ครั้งขึ้นไปและไม่มีการสูญเสียความเร็วในการเข้าถึงข้อมูล สิ่งนี้มีประโยชน์อย่างยิ่งหากข้อมูลไม่เปลี่ยนรูป
รูปแบบที่คล้ายกันใช้สำหรับการจัดเก็บข้อมูลทางกายภาพใน DBMs อุตสาหกรรม
นั่นคือในมือที่มีความชำนาญรูปแบบข้อมูลนี้เป็นสิ่งที่ทรงพลัง
แน่นอนว่าไม่ใช่ทุกสิ่งในรูปแบบนี้เป็นสิ่งประดิษฐ์ของ Google ค่อนข้างจะถูกคิดค้นโดย Google เล็กน้อย
ขา IMHO เติบโตจากรูปแบบ ASN.1 เมื่อฉันเห็นเอกสารของรูปแบบนี้ฉันประหลาดใจมากแค่ไหนที่พวกเขาจับคู่
บุญที่สำคัญที่สุดของ Google ในการส่งเสริมรูปแบบข้อมูลนี้และในการเผยแพร่ซอร์สโค้ดในโอเพนซอร์ส
ASN.1 มีความคล้ายคลึงกันในวัตถุประสงค์และใช้กับบัฟเฟอร์โปรโตคอลและ Apache Thrift ซึ่งเป็นภาษาคำอธิบายอินเตอร์เฟสสำหรับการทำให้เป็นอนุกรมข้อมูลข้ามแพลตฟอร์ม เช่นเดียวกับภาษาเหล่านั้นมันมีสคีมา (ใน ASN.1 เรียกว่า "โมดูล") และชุดของการเข้ารหัสโดยทั่วไปแล้วการเข้ารหัสค่าความยาวประเภท อย่างไรก็ตาม ASN.1 ซึ่งกำหนดไว้ในปี 1984 มีมาก่อนพวกเขาหลายปี นอกจากนี้ยังมีประเภทข้อมูลพื้นฐานที่หลากหลายซึ่งบางชนิดล้าสมัยและมีตัวเลือกเพิ่มเติมสำหรับการขยาย ข้อความ ASN.1 เดียวสามารถรวมข้อมูลจากหลายโมดูลที่กำหนดไว้ในหลายมาตรฐานแม้กระทั่งมาตรฐานที่กำหนดไว้หลายปี