Big Binary Files Upload (PostgreSQL)
Vitu Kubwa vya PostgreSQL
PostgreSQL inatoa muundo unaojulikana kama vitu vikubwa, vinavyopatikana kupitia meza ya pg_largeobject
, iliyoundwa kuhifadhi aina kubwa za data, kama picha au hati za PDF. Njia hii ni bora kuliko kazi ya COPY TO
kwani inawezesha kurejesha data kwenye mfumo wa faili, ikihakikisha nakala kamili ya faili ya awali inabaki.
Kwa kuhifadhi faili kamili ndani ya meza hii, kipengee lazima kisasisishwe kwenye meza ya pg_largeobject
(kikiwa na LOID), kisha data itakatwe katika vipande vya 2KB na kuingizwa kwenye kipengee hiki. Ni muhimu kwamba vipande hivi viwe saizi ya 2KB (isipokuwa kipande cha mwisho kinaweza kuwa tofauti) ili kuhakikisha kazi ya kurejesha inafanya kazi kwa usahihi.
Ili kugawanya data yako ya binary katika vipande vya 2KB, amri zifuatazo zinaweza kutekelezwa:
Kwa kuweka kila faili katika muundo wa Base64 au Hex, amri zifuatazo zinaweza kutumika:
Muhimu: Wakati wa kiotomatiki mchakato huu, hakikisha kutuma vipande vya 2KB vya herufi wazi. Faili zilizohifadhiwa kwa mfumo wa Hex zitahitaji data ya 4KB kwa kila kipande kutokana na kuongezeka kwa ukubwa, wakati faili zilizohifadhiwa kwa mfumo wa Base64 zitafuata fomula ceil(n / 3) * 4
.
Maudhui ya vitu vikubwa vinaweza kuonekana kwa madhumuni ya kutatua matatizo kwa kutumia:
Kutumia lo_creat
& Base64
Ili kuhifadhi data ya binary, LOID kwanza inaundwa:
Katika hali zinazohitaji udhibiti sahihi, kama vile kuchexploit SQL Injection ya Kipofu, lo_create
inapendelewa kwa kutoa LOID iliyowekwa.
Vipande vya data vinaweza kisha kuingizwa kama ifuatavyo:
Kuhamisha na huenda kufuta kipengee kikubwa baada ya matumizi:
Kutumia lo_import
& Hex
Kazi ya lo_import
inaweza kutumika kuunda na kutoa LOID kwa kipengele kikubwa:
Baada ya kuundwa kwa kitu, data inaingizwa kwa kila ukurasa, ikihakikisha kila kipande hakizidi 2KB:
Kukamilisha mchakato huo, data inaexportiwa na kifaa kikubwa kinafutwa:
Vizuizi
Imejulikana kuwa vitu vikubwa vinaweza kuwa na ACLs (Orodha za Kudhibiti Upatikanaji), ambazo zinaweza kuzuia upatikanaji hata kwa vitu vilivyoundwa na mtumiaji wako. Walakini, vitu vya zamani na ACLs zenye ruhusa zinaweza bado kupatikana kwa ajili ya kuiba maudhui.
Last updated