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 ទេ ប៉ុន្តែពួកវាមាន lexicographically ក្នុងលំដាប់ដូចគ្នាទៅនឹងធាតុមុន កុំប៉ះទង្គិចជាមួយ 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

ថយក្រោយ