ນັກພັດທະນາ SQLite ພັດທະນາ backend HC-tree ດ້ວຍການສະຫນັບສະຫນູນການຂຽນຂະຫນານ

ຜູ້ພັດທະນາໂຄງການ SQLite ໄດ້ເລີ່ມຕົ້ນການທົດສອບ backend HCtree ທົດລອງທີ່ສະຫນັບສະຫນູນການລັອກລະດັບແຖວແລະສະຫນອງການຂະຫນານໃນລະດັບສູງໃນເວລາທີ່ດໍາເນີນການສອບຖາມ. backend ໃຫມ່ແມ່ນແນໃສ່ປັບປຸງປະສິດທິພາບຂອງການນໍາໃຊ້ SQLite ໃນລະບົບ client-server ທີ່ຕ້ອງດໍາເນີນການຈໍານວນການຮ້ອງຂໍການຂຽນພ້ອມໆກັນກັບຖານຂໍ້ມູນ.

ໂຄງສ້າງ b-tree ທີ່ພື້ນເມືອງໃຊ້ໃນ SQLite ເພື່ອເກັບຮັກສາຂໍ້ມູນບໍ່ໄດ້ຖືກອອກແບບມາສໍາລັບການໂຫຼດປະເພດນີ້, ເຊິ່ງຈໍາກັດ SQLite ທີ່ຈະຂຽນພຽງແຕ່ຫນຶ່ງກະທູ້. ໃນຖານະເປັນການທົດລອງ, ຜູ້ພັດທະນາໄດ້ເລີ່ມພັດທະນາການແກ້ໄຂທາງເລືອກທີ່ໃຊ້ໂຄງສ້າງ HC-tree ສໍາລັບການເກັບຮັກສາ, ເຊິ່ງເຫມາະສົມສໍາລັບການປະຕິບັດການຂຽນແບບຂະຫນານ.

ເພື່ອໃຫ້ການດໍາເນີນການຫຼາຍອັນສາມາດດໍາເນີນການພ້ອມກັນໄດ້, ບັນທຶກ HCtree ໃຊ້ກົນໄກການແບ່ງສ່ວນທຸລະກໍາທີ່ໃຊ້ການລັອກລະດັບຫນ້າ ແລະຄ້າຍຄືກັນກັບ MVCC (Multi-Version Concurrency Control) ແຕ່ໃຊ້ການກວດສອບການເຮັດທຸລະກໍາໂດຍອີງໃສ່ລະຫັດແລະໄລຍະທີ່ສໍາຄັນແທນທີ່ຈະເປັນຊຸດຫນ້າ. ການປະຕິບັດການອ່ານແລະຂຽນແມ່ນປະຕິບັດໃນການເຊື່ອມຕໍ່ກັບ snapshot ຖານຂໍ້ມູນ, ການປ່ຽນແປງທີ່ຈະເຫັນໄດ້ໃນຖານຂໍ້ມູນຕົ້ນຕໍພຽງແຕ່ຫຼັງຈາກການເຮັດທຸລະກໍາສໍາເລັດ.

ລູກຄ້າສາມາດໃຊ້ສາມການດໍາເນີນງານເປີດ:

  • “BEGIN”—ທຸລະກຳບໍ່ໄດ້ຄຳນຶງເຖິງຂໍ້ມູນການເຂົ້າເຖິງຂອງລູກຄ້າອື່ນ. ຖ້າການດໍາເນີນການຂຽນຖືກປະຕິບັດພາຍໃນການເຮັດທຸລະກໍາ, ການເຮັດທຸລະກໍາສາມາດຫມັ້ນສັນຍາໄດ້ພຽງແຕ່ວ່າໃນລະຫວ່າງການປະຕິບັດຂອງມັນບໍ່ມີການດໍາເນີນງານການຂຽນອື່ນໃນຖານຂໍ້ມູນ.
  • "BEGIN CONCURRENT" - ທຸລະກໍາເກັບກໍາຂໍ້ມູນກ່ຽວກັບການເຂົ້າເຖິງຂອງລູກຄ້າອື່ນໆ. ຖ້າການດໍາເນີນການຂຽນຖືກປະຕິບັດພາຍໃນການເຮັດທຸລະກໍາ, ການເຮັດທຸລະກໍາສາມາດຫມັ້ນສັນຍາໄດ້ຖ້າຫາກວ່າການເຮັດທຸລະກໍາອື່ນໆໄດ້ຖືກປະຕິບັດຢູ່ໃນຖານຂໍ້ມູນນັບຕັ້ງແຕ່ການຖ່າຍພາບໄດ້ຖືກສ້າງຂື້ນ.
  • “BEGIN EXCLUSIVE” - ຫຼັງຈາກເປີດທຸລະກໍາ, ມັນຂັດຂວາງການດໍາເນີນງານຈາກທຸລະກໍາອື່ນໆຈົນກ່ວາມັນສໍາເລັດ.

HCtree ສະຫນັບສະຫນູນການຈໍາລອງແບບແມ່ບົດ - slave, ເຊິ່ງຊ່ວຍໃຫ້ທ່ານສາມາດເຄື່ອນຍ້າຍທຸລະກໍາໄປຫາຖານຂໍ້ມູນອື່ນແລະຮັກສາຖານຂໍ້ມູນຂັ້ນສອງໃນ sync ກັບຖານຂໍ້ມູນຕົ້ນຕໍ. HCtree ຍັງເອົາຂໍ້ຈໍາກັດກ່ຽວກັບຂະຫນາດຖານຂໍ້ມູນ - ແທນທີ່ຈະເປັນຕົວລະບຸຫນ້າຂໍ້ມູນ 32-bit, HCtree ໃຊ້ 48-bit, ເຊິ່ງເພີ່ມຂະຫນາດຖານຂໍ້ມູນສູງສຸດຈາກ 16 tebibytes ເປັນ 1 exbibyte (ລ້ານເທບີໄບ). ມັນຄາດວ່າການປະຕິບັດຂອງ SQLite ກັບ backend HCtree ຈະບໍ່ຕ່ໍາກວ່າ backend ເສັ້ນດ່ຽວຄລາສສິກ. ລູກຄ້າ SQLite ທີ່ມີການສະຫນັບສະຫນູນ HCtree ຈະສາມາດເຂົ້າເຖິງໄດ້ທັງຖານຂໍ້ມູນ HC-tree-based ແລະຖານຂໍ້ມູນ SQLite ເກົ່າ.

ແຫຼ່ງຂໍ້ມູນ: opennet.ru

ເພີ່ມຄວາມຄິດເຫັນ