UUIDs នៅក្នុងមូលដ្ឋានទិន្នន័យ

UUIDs (ឧបករណ៍បញ្ចូល លេខសម្គាល់ តែមួយគត់ ជា សកល​​) គឺជា​តម្លៃ 128 ប៊ីត ដែល​ត្រូវ​បាន​ប្រើ​ក្នុង​មូលដ្ឋាន​ទិន្នន័យ ក្នុង​ចំណោម​របស់​ផ្សេង​ទៀត ដើម្បី​កំណត់​អត្តសញ្ញាណ​ធាតុ​តារាង​ដោយ​ឡែក។ ពួកវាត្រូវបានតំណាងជាខ្សែអក្សរលេខគោលដប់ប្រាំមួយចែកជាប្រាំក្រុមដែលបំបែកដោយសហសញ្ញា (ឧទាហរណ៍: 09fe49b3-4d2b-471c-ac04-36c9e706b85f) មាន ជាច្រើន ការពិភាក្សា អំពីគុណសម្បត្តិ និងគុណវិបត្តិនៃ UUID នៅក្នុងមូលដ្ឋានទិន្នន័យ - ពួកវាមិនអាចខ្វះបាននៅក្នុងប្រព័ន្ធចែកចាយ។


នៅក្នុងសេវាកម្មមីក្រូ និងកម្មវិធីជួលច្រើន វាមានតម្លៃពិចារណាលើការណែនាំ UUIDs។ ការប្តូរពីប្រភេទទិន្នន័យ BigInteger ទៅ UUID (វ៉ារ្យ៉ង់ដែលអាចតម្រៀបបាននៃ UUID កំណែ 4 ពីការបញ្ជាក់ RFC 4122 ) ក្នុងក្របខ័ណ្ឌ PHP Laravel ត្រូវបានធ្វើបានយ៉ាងឆាប់រហ័ស៖ ដំបូងយើងបង្កើត លក្ខណៈ ថ្មី:

2aa7136d977617159be1834eaf40e871

បន្ទាប់មកយើងបន្ថែមម៉ូដែលទាំងអស់របស់យើង។:

2aa7136d977617159be1834eaf40e871

នៅក្នុង Laravel 9⁺ នេះកាន់តែងាយស្រួលជាងមុន៖ នៅទីនេះយើងមានមុខងារ HasUuids រួចរាល់សម្រាប់ប្រើប្រាស់ហើយ។ ម៉្យាងទៀត ក្របខណ្ឌនេះក៏ផ្តល់នូវការគាំទ្រសម្រាប់ប្រភេទទិន្នន័យដែលពាក់ព័ន្ធ ប៉ុន្តែនៅតែមិនស្គាល់ប្រភេទទិន្នន័យ ULID ដែលអាចគួរឱ្យចាប់អារម្មណ៍ ដោយសារការអាន និងការតម្រៀបបានប្រសើរជាងមុន។

ផ្នែកដ៏លំបាកគឺការផ្ទេរទិន្នន័យដែលមានស្រាប់។ ប្រហែលជាមួយអាចបន្តដូចខាងក្រោម:

  1. បន្ថែមជួរឈរ UUID ថ្មីជាមួយនឹងតម្លៃទទេទៅតារាងទាំងអស់។
    (នីមួយៗផ្អែកលើជួរឈរសំខាន់ៗ និងគន្លឹះបរទេស)
  2. សរសេរតម្លៃ UUID ទៅជួរឈរថ្មី។
    (ជាមួយ​នឹង​កូនសោ​ចម្បង​ឡើង​ទៅ​បូក​នឹង​សោ​បរទេស​ដែល​បាន​ធ្វើ​បច្ចុប្បន្នភាព)
  3. លុប​ជួរ​ឈរ​ដើម
  4. ប្តូរឈ្មោះជួរឈរថ្មី។

មាន​បញ្ហា​ប្រឈម​ជាច្រើន​នៅ​ទីនេះ៖ ដំណើរការ​ចំណាកស្រុក​ត្រូវ​ចំណាយ​ពេល​យូរ ហើយ​ជួរ​ឈរ​ថ្មី​ត្រូវ​បាន​បន្ថែម​នៅ​ខាង​ចុង​តារាង (ដំណោះស្រាយ​ដែល​អាច​ធ្វើ​បាន៖ ជួរឈរ​រមណីយដ្ឋាន )។ វិធី​ផ្ទាល់​ច្រើន​ជាង​នេះ​គឺ​ការ​បំប្លែង​ជួរ​ឈរ​ដោយ​ផ្ទាល់។

ប្រសិនបើអ្នកដាក់នោះ។ PostgreSQL មួយ អ្នកអាច (បន្ទាប់ពីការបម្រុងទុកពីមុន ជាការពិត) ដំណើរការសំណួរខាងក្រោម ឧទាហរណ៍ (មុនពេលដែលអ្នកអាចលុបតារាងទាំងអស់ដែលអ្នកមិនរាប់បញ្ចូលក្នុង Z ។ 19/31 ជំនួស ក៏ដូចជាច្បាប់ពិសេសផ្ទាល់ខ្លួននៅក្នុង Z. 37/39 បន្ថែម) និងចម្លងរាល់សំណួរដែលបានបង្កើតពីវា។:

2aa7136d977617159be1834eaf40e871

ប្រសិនបើឥឡូវនេះអ្នកដំណើរការសំណួរដែលបានបង្កើតជាមួយគ្នា អ្នកបានផ្ទេរមូលដ្ឋានទិន្នន័យក្នុងរយៈពេលដ៏ខ្លី។ ខណៈពេលដែល UUIDs ដែលបង្កើតដូច្នេះមិនអនុលោមតាមការបញ្ជាក់ v4 ពួកវាមាន lexigraphically តាមលំដាប់ដូចគ្នានឹងធាតុមុន កុំប៉ះទង្គិចជាមួយ UUID ថ្មី (នៅក្នុងក្រុមទី 3 នៅក្នុង v4 តែងតែមាន 4, តែងតែមានមួយនៅក្នុងវ៉ារ្យ៉ង់ដែលបានធ្វើចំណាកស្រុក 0) ដែលមានន័យថា UUID ថ្មីតែងតែធំជាង UUIDs ដែលបានធ្វើចំណាកស្រុក។

បន្ទាប់ពីនោះ វាត្រូវបានណែនាំឱ្យលុបឃ្លាំងសម្ងាត់ Laravel ទាំងអស់ (php artisan cache:clear && php artisan route:clear && php artisan config:clear && php artisan view:clear && composer dump-autoload && rm -rf bootstrap/cache/*/*) និងវគ្គដែលកំពុងដំណើរការ (rm -f storage/framework/sessions/*) ទៅទទេ។ ជាការពិតណាស់ រឿងទាំងមូលក៏អាចត្រូវបានអនុវត្តនៅក្នុងការធ្វើចំណាកស្រុក Laravel ផងដែរ។:

2aa7136d977617159be1834eaf40e871

បន្ទាប់​ពី​ការ​បំប្លែង​រួច គេ​ប្រើ​ការ​ធ្វើ​ចំណាក​ស្រុក​ពេល​អនាគត​ជំនួស​វិញ។ bigIncrements ឬ។ bigInteger បន្ទាប់មក uuid:

2aa7136d977617159be1834eaf40e871

ថយក្រោយ