Cheia principală GUID este vs NUMBER în Oracle This" />

Cheia primară vs numărul în oracol

Subiectul. Opiniile interesate din secțiunea de performanță-confort, dacă GUID este stocat ca CHAR (32)

Și de ce "vs Număr"?


> Cheia principală GUID este vs NUMBER în Oracle







E moartea ca! DE CE. Acest specialist a păcătuit doar pe specialiștii MS SQL Server (nu a reușit să obțină ID-ul cheilor de incrementare automată înainte de DML).

înseamnă o perie pentru o secvență

Producătorul ROWID încă nu este nimic.
Și poate fi adus la linie și înapoi în spate.


> 1 Puteți genera pe client sau pe server și știți
> valoare cheie înainte de introducere

Și Numărul poate fi generat. Nu văd problema.


> 2 Identificarea unică a pachetelor de date transmise
> în modul off-line (de exemplu, SMTP-SOAP) între diferite
> organizațiile în care este instalat sistemul

Depinde de sarcină, în opinia mea. Și întrebarea dvs. GUID vs NUMBER este prea generală, astfel că, în acest caz, puteți da un răspuns fără ambiguitate.


> 3 Actualizarea directoarelor de la părinte la filiale
> în cazul în care filialele sunt autorizate să suplimenteze
> directoare cu înregistrări proprii

Acest lucru este ambiguu. De asemenea, ele pot fi upgradit și NUMBER „ohm. Așa cum conflictele vor fi determinate în cazul în care câteva filiale intră fiecare înregistrare, diferind doar GUID“ th?

De aceea, Oracle diferă de MS SQL Server.
Faceți cerința SEQ_NAME.NEXTVAL și obțineți o valoare garantată unică!
Mai mult, componente precum DOA și ODAC știu cum să facă acest lucru (trebuie să specifice o secvență care "funcționează" pe tabelul selectat).


> (nu se poate obține ID-ul cheilor de incrementare automată)
> înainte de a executa DML)

Și de ce să-i dăm înainte. Poți și imediat după. Eu o fac deseori în oracol - acolo se întoarce.

IMHO. GUID este o încercare de a rezolva mai ușor problema replicării.
Plus doar unul - rapid și ușor în toate bazele unic (cu mare probabilitate) ID-shniki.
contra:
1) În general, probabilitatea de a mânca aceeași identitate mănâncă, deși oooochen scăzut
2) generează o secvență mai lungă
3) Indexarea este mai greu - cifrele sunt mai eficiente prin numere
4) Nu există informații mnemonice, așa. sursă de formare (de exemplu, numărul serverului), ordin de generare (cu o organizație competentă de formare a ID-urilor, puteți determina numărul numărului de înregistrări care au apărut mai târziu)
5) Avem nevoie de mai puțin spațiu pentru Namber.
6) Profesorul meu a spus că, potrivit experienței sale, ID-urile Namber sunt mai bune (pentru mine acest lucru este punctul principal)


> 6) Profesorul meu a spus că, potrivit experienței sale, ID-ul Namber este mai bun
> (pentru mine acest lucru este punctul principal :))

Urmăriți pe cineva folosit / depanat o dată

(c) ierarhia utilizatorilor VMS

Da, am dat un exemplu de 100 de ori - în cazul în care trebuie să creați o mulțime de înregistrări din tabelele conectate pe client. Le trimiteți la server deja cu valori stabilite de regulile de chei străine și nu vă mai faceți griji despre ele.


> 2 Identificarea unică a pachetelor de date transmise
> în modul off-line (de exemplu, SMTP-SOAP) între diferite
> organizațiile în care este instalat sistemul
Cum se raportează la cheile din baza de date?

Și de ce aveți nevoie de o cheie unică pentru toate tipurile de mese?
Indicii pentru CHAR sunt evident mai inhibitori.

Amenințarea pentru fiecare acțiune instrumentul tău. GUID ca PK în tabele, IMHO, nu conduce.


> Da, am dat un exemplu de 100 de ori - în cazul în care trebuie să creați
> multe înregistrări din tabelele conectate pe client

Este doar pentru ce. Ei bine, dacă MS SQL este o astfel de curbă că nu există generatoare, cu excepția câmpurilor auto-incrementale, atunci toate formează odată?






Mai întâi, creați o înregistrare de bază. Apoi scoateți ID-ul și înlocuiți în detaliu. Și modul de generare în MS SQL poate fi de asemenea modificat.

În sector, puteți trage secvențele în avans și le puteți introduce. Deși toți aceiași operatori vor merge unul câte unul. Și chiar mai bine, dacă este posibil, spargeți acest cod într-un pachet și nu suferiți.

Дополнб - т.к. MS SQL mănâncă pachete de operatori DML, atunci puteți să conduceți ID-urile rezultate în variabilele serverului (dacă le-am numit corect) și apoi să le folosiți. De asemenea, un pachet și totul va merge.

Acest schimb sharatit de client-server cu o tranzacție deschisă.
Pe aceasta nu pot sa plec: (

(Probabil de ce nu lucrez cu MS SQL).


> Este schimbarea client-server când tranzacția este deschisă?
>.
> Nu pot merge: (

Și ce e în neregulă cu asta?

MS SQL nu iartă acest lucru!


> De exemplu. ca "ce este"?
> Vă propuneți să deschideți o tranzacție, să rulați DML pe server,
> # xA0; așteptați executarea, obțineți @@ identitate pe server, trimiteți
> la client, unde să se umple valorile necesare ale subordonaților
> tabele, apoi trimiteți un nou DML către server și închideți tranzacția?
>.
>
> MS SQL nu iartă acest lucru!

În primul - iartă
În al doilea rând - puteți face totul într-un singur pachet.

Și ce, distribuie nimeni nu scrie? Încearcă astfel de unanimitate în opiniile. Nu-mi pot imagina viața fără ghiduri în sisteme, de exemplu, fluxul de lucru. Deși este foarte posibil să o folosim ca un câmp auxiliar, dar în acest caz avem de fapt două chei primare

Și distribuitorii scriu.
Iar problema unicității este decisă. Și în cazul cheilor din Nambur și în cazul corzilor. Și așa cum a menționat deja cineva mai sus folosind legarea mnemonică a cheii către subsistem.

Mulți distribuitori scriu. Dar unde este GUID-ul.
Îmi pare greu să-mi imaginez unde să pun GUID în fluxul de lucru. Și în cazul în care documentul diferă, de exemplu, de contabilitate? Poate fi util pentru a publica GUID?
Singura dată când a venit la îndemână pentru mine a fost când am făcut o carte individuală de plastic pentru un client.


> Mă simt greu să-mi imaginez o viață fără ghiduri în sisteme,
> # xA0; de exemplu, fluxul de lucru.

Nu-mi pot imagina - dar are nevoie de ea acolo. )


> Cine este "pachetul"?

În MS SQL, puteți trimite mai multe DML la server într-o singură interogare.
Și puteți, de asemenea, o bucată de T-SQL.
De fapt, el înțelege fiecare cerere ca ceva de genul unui bloc fără nume în Oracle. În acest caz, puteți returna și un set de date. Și nu numai.

Un exemplu din viață. Gama de cercetare de laborator cuprinde mai multe mii de articole, astfel încât nici unul din laborator nu este în măsură să efectueze toate studiile și un acord privind distribuția muncii poate exista între laboratoare. De exemplu, o explorează doar sângele, iar cealaltă numai urină, iar clientul este indiferentă față de diviziunea muncii - el devine primul laborator, mâinile, și apoi, și multe altele. Se pregătește ordinea electronică și examinează sângele este laboratorul în care se adresează, și de laborator urină trimite acest partener de laborator, și a trimis, de asemenea, o copie a ordinului electronic.
Astfel, în baza de date a laboratorului partener, apare automat o copie a direcției cu un identificator unic. După ce toate studiile au fost efectuate, este rezonabil să îmbinați aceste două ordini într-una singură.

Nu înțeleg ce urină trebuie drenată cu sânge. )))
Bănuiesc că GUID cumpără defectele în proiectarea bazei de date.


> Asta-i drept, replicarea este un cuvânt cheie.

Mă întreb cum te determină apoi pe ce server sa născut înregistrarea?
Am lucrat cu un sistem în care au fost implicate mai mult de 10 servere reale în replicare (fără a include oglinzi auxiliare). Și acolo au fost folosite ID-urile Nambero. În același timp, când analizați zborurile, puteți să urmăriți întotdeauna de unde provin totul.

După ID-ul organizației. De asemenea, ghidați-vă. Și este preluat din Active Directory.


> După identificarea organizației. De asemenea, ghidați-vă. Și este luat
> din Active Directory.

Apoi veți avea două GUID-uri. "A. Unul pentru unicitatea intrării, al doilea pentru organizația care este responsabilă pentru această intrare sau nu am înțeles nimic.

Ce e în neregulă cu asta. )

Da, în principiu, nimic special. Din această logică rezultă că GUID - este util să se facă toate cheile primare ale tuturor tabelelor din toate bazele de date din lume.
Înțelegeți - nu ați justificat niciodată utilizarea identificatorului GUID! Mulți oameni au vorbit împotriva lui.
Cu toate acestea, trebuie să plătim tribut adevărului - bazele de date cu ID-uri GUID pot funcționa fără eroare.

Am două sistemki pentru o sută de mii de înregistrări în tabelul max pe guides. Funcționează ca un ceas. M-am obișnuit și l-am umplu. Doar am planificat un alt modul, care are un megabat, folosind un produs cartezian, acolo poate ajunge la zeci de milioane.
test de performanță pentru Oracle 10 XE, nu am putut efectua :) milioane de înregistrări cu tipul Număr de identificare a introdus aproximativ 10 minute, și identificatorul de peste un milion de înregistrări-char (32) Oracle grunted o jumătate de oră și a spus că el a avut o eroare internă.

Memorie: 0,83 MB
Durată: 0.098 sec







Articole similare

Trimiteți-le prietenilor: