AI u Databases MySQL

AI u Databases MySQL...

16 May 2025

5

min qari

Innovazzjoni AI

Adrian Sweeney

Dan huwa żball sinifikanti li ħafna skemi tal-database iġġenerati mill-AI fil-preżent għandhom tendenza li jużaw VARCHAR(36) għall-kolonna id.

Dan huwa normalment imħeġġeġ minn xewqa li tiġi mpedita l-aċċess mhux awtorizzat mingħand atturi malizzjużi. Biex dan jinkiseb, UUID (Identifikaturi Uniċi Universali) spiss jintużaw bħala miżura ta' sigurtà.

Ħu WordPress bħala eżempju — dan normalment jeskoni l-IDs tal-posts fl-URL bħala ?p=45. Meta mqabbla ma' format user-friendly tal-SEO bħal /2025/05/sample-post, dan l-ID numeriku jippermetti lill-utenti li forsi jivvalutaw u jaċċessaw kontenut ħdejn billi jbiddlu n-numru (eż. ?p=44). UUID min-naħa l-oħra mhumiex sekwenzjali u huma ferm aktar diffiċli biex jitħammnu.

UUID huma strings ta' 36 karattru li jsegwu format standard bi ħames taqsimiet separati bi lineoli: 8-4-4-4-12. Kull sezzjoni tikkonsisti minn valuri eżadeċimali:

550e8400-e29b-41d4-a716-446655440000
f47ac10b-58cc-4372-a567-0e02b2c3d479
123e4567-e89b-12d3-a456-426614174000

Regex sempliċi biex tivvalida UUID tidher bħal dan:

^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$

Filwaqt li l-UUID jipprovdu sigurtà u trasportabbiltà, jiġu b'kompromessi. Huma ferm akbar minn integers, li jistgħu jnaqqsu l-prestazzjoni tal-database — speċjalment meta jintużaw bħala ċwievet primarji fi databases relazzjonali. L-indiċjar, l-użu tal-memorja u l-veloċità tal-mistoqsijiet kollha jsofru minħabba d-daqs u n-natura mhux sekwenzjali tal-UUID.

Konversazzjoni AI dwar strateġija ID

Kurjuż dwar dan l-għażla tad-disinn, staqsejt din il-mistoqsija lil GitHub Copilot:

Jien:
Għaliex għażilt li tiddefinixxi l-kolonna id bħala VARCHAR(36) PRIMARY KEY fl-istruttura tal-database?

GitHub Copilot:

Għażilt VARCHAR(36) għall-kolonni ID għal diversi raġunijiet speċifiċi:

  1. Ħżin UUID: It-tul ta' 36 karattru jakkumoda valuri UUID, li jsegwu format standardizzat.
  2. Sistemi Multi-tenant: UUID jgħinu jiżolaw inquilini billi jeliminaw tnixxija ta' ID sekwenzjali, jissimpifikaw migrazzjonijiet u jtejbu s-sigurtà.
  3. Trasportabbiltà tad-Data: UUID jiżguraw li d-data esportata m'għandhiex kunflitti ta' ID meta tiġi importata f'sistema oħra.

Kompromessi:

  • Daqs ta' ħżin akbar (36 bytes kontra 4 bytes għal INT)
  • Prestazzjoni tal-indiċjar u tal-mistoqsijiet eqreb
  • Użu tal-memorja ogħla

Alternattivi biex tikkunsidra:

  1. AUTO_INCREMENT INT/BIGINT
  2. BINARY(16) biex taħżen bytes UUID mhux ipproċessati b'mod aktar effiċjenti
  3. Strateġija personalizzata ta' ġenerazzjoni ta' ID

Għid li taf jekk tippreferi approċċ differenti.

Jien:
Uża BIGINT UNSIGNED għall-prestazzjoni, iżda żomm qasam guid f'kull rekord għal referenzi esterni.

GitHub Copilot:

Se naġġorna l-iskema biex tuża BIGINT UNSIGNED għaċ-ċwievet primarji u żid kolonna guid għar-referenzi esterni. Dan l-approċċ ibridu jgħaqqad l-aħjar mit-tnejn strateġiji:

  • Prestazzjoni: Indiċjar effiċjenti u joins permezz ta' ċwievet primarji numeriċi
  • Sigurtà u Trasportabbiltà: GUID espost fl-APIs, iżommu IDs interni siguri mill-enumerazzjoni

Sommarju:

  • BIGINT UNSIGNED: Mgħaġġel, kompatt, sekwenzjali
  • GUID (VARCHAR): Uniku, trasportabbli, sigur esternament

Databases NoSQL u MongoDB ObjectIds

Filwaqt li d-databases relazzjonali joffru flessibilità fl-għażla bejn UUID, integers, jew approċċi ibridi, sistemi NoSQL bħal MongoDB jieħdu triq differenti.

MongoDB juża tip mibnija msejjaħ ObjectId għall-qasam _id tiegħu. Dan huwa valur binarju ta' 12-byte li jikkodifika:

  • 4 bytes – Timestamp (sekondi mill-epoka)
  • 5 bytes – Valur każwali (spiss ibbażat fuq magna + ID tal-proċess)
  • 3 bytes – Kontatur li jiżdied

Eżempju:

507f1f77bcf86cd799439011

Għaliex MongoDB jagħżel ObjectId

  1. Globalment uniku mingħajr koordinazzjoni
    Bħal UUID, ObjectIds ma jeħtieġux awtorità ċentrali biex jiżguraw uniċità, u dan jagħmilhom ideali għal ambjenti distribwiti.
  2. Ordnati skont iż-żmien
    It-timestamp inkorporat ifisser li d-dokumenti huma f'ordni kronolojika b'mod awtomatiku, li jista' jgħin fil-prestazzjoni f'mistoqsijiet ta' serje temporali.
  3. Kompatt u effiċjenti
    Maħżun f'format binarju, ObjectIds jieħdu biss 12-il byte — ferm inqas minn UUID VARCHAR(36). Huma wkoll aktar favur l-indiċjar.

Paragun ta' strateġiji ID

KaratteristikaUUID (VARCHAR)BIGINT + GUID ibriduMongoDB ObjectId
Daqs tal-ħżin36 byte8 + 36 byte12-il byte
Prestazzjoni tal-indiċjarĦażinEċċellentiEċċellenti
Sekwenzjali / żmienLeIva (BIGINT biss)Iva (permezz ta' timestamp)
Format leġibbli mill-bniedemIvaIva (GUID)Le (ibbażat fuq hex)
Li jista' jitħammenLeLe (GUID biss)Le
Infurzar tal-iskemaStrettStrettFlessibbli

Għażliet AI f'kuntesti NoSQL

Ħafna sistemi ġġenerati mill-AI jużaw konfigurazzjonijiet NoSQL bħal MongoDB b'mod awtomatiku meta:

  • Huma mistennija kitbiet għolja jew sharding
  • Skemi jeħtieġu jkunu flessibbli jew semi-strutturati
  • Trasportabbiltà tad-data u skalazzjoni distribwita huma prijoritajiet

F'każijiet bħal dawn, huwa spiss għażla għaqli awtomatika li tużau ObjectIds jew identifikaturi uniċi simili, ordnati skont iż-żmien.

PrimeCRM

Lura għaċ-Ċentru tal-Għarfien