Moje želje DBMS-u budućnosti, kao i Rosreestru u pogledu transakcija

Moje želje DBMS-u budućnosti, kao i Rosreestru u pogledu transakcija
Klijent je u interakciji sa bazom podataka.
Sa stranice http://corchaosis.ru, Jonathan Tiong.

Pored toga što sam programer (uglavnom Delphi + svakakvi razni DBMS-ovi, odnedavno ORACLE, + malo PHP), imam hobi - kupoprodaja stanova. Kupujem stan u fazi izgradnje od manje-više pouzdanog investitora po povoljnoj cijeni (na primjer, sada je Samolet takav investitor, prodaju se stanovi u blizini stanice metroa Nekrasovka), čekam da se kuća isporuči (često dva godina kasnije, to se dešava sa jeftinim ponudama), renoviram ga i onda ga prodam za 95-100% njegove tržišne cene.

Dakle, ja sam (kao i svi ostali) bio suočen s problemom RosReestrovog nedostatka transakcija.

Problem Rosreestrovog nedostatka transakcionih transakcija

U programiranju je to „Transakcija“, a u nekretninama „Transakcija sa alternativom“ (i takođe, kao deo toga, „Ugovor o sefu“), i to je malo komplikovanije. Kažem ti.

Vasja je došao da pogleda stan koji je Petja prodavala. I Vasji se zaista sve svidjelo, uključujući i cijenu, ali Vasja nema novca. Ovako počinje naša priča.

Vasja ima svoje imanje, koje ima neke vrednosti ​​U blizini se može prošetati Aeroexpressom, ispod stana je podrum visine 1 metar, iznad stana je potkrovlje pogodno za astronomska posmatranja. Vasya shvaća da ove karakteristike povećavaju cijenu njegovog stana, ali ne i za njega. I on odlučuje kupiti Petyin stan i prodati svoj stan. Ali prodaja upravo da bi se kupio Petjin stan, i to ne samo. Na jeziku prodavača nekretnina, to se zove „Odabrana je alternativa“.

Pogledajmo sada ovu situaciju sa Petyine strane. Činjenica je da Petya također nije zainteresiran da sjedi na amortiziranom novcu, on prodaje stan kako bi sebi kupio stan u vilenjačkom gradu Valinoru, ali još nije pogledao koji. Na jeziku trgovaca nekretninama, to se zove „Posao sa alternativom“.

Dva vilenjaka Međuzemlja, Maglor i Maedhros, imaju odgovarajuću (po Petyinom kriterijumu) nekretninu u gradu Valinoru, koja se hitno prodaje, jer će služiti Melkoru. Na jeziku posrednika to se zove “slobodna prodaja”.

Dakle, Vasya pronalazi klijenta, Seryozha. Sada Petya pronalazi dvije pogodne opcije za njega u gradu Valinoru. Uskoro smo da finaliziramo dogovor. Pretpostavimo radi jednostavnosti da nijedna strana u transakciji ne koristi hipoteku i da nema maloljetne osobe kao vlasnike dionica. Dakle, sada se moraju izvršiti sljedeće radnje:
1. Serjoža daje novac Petji.
2. Vasja daje svoj stan Serjoži.
3. Petja daje svoj stan Vasji.
4. Ili Maglor ili Maedhros prenose svoj stan u Valinoru u Petu i primaju Seryozhin novac.
5. Malkor i Maedhros odlaze u Mordor da služe Melkoru.

Bilo bi idealno da Rosreestru pošaljete sljedeću skriptu na izvršenje:

POČNI TRANSAKCIJU
Dajte Vasjin stan Serjoži.
Dajte Petjin stan Vasji.
početi
Daj Malkorov stan Petji
Daj Serjožin novac Malkoru
IF_GREŠKA:
Dajte Maedhrosov stan Petyi
Daj Seryozhin novac Maedhrosu
Kraj
COMMIT TRANSACTION

Ovo je pojednostavljena transakciona skripta sa alternativom, koja pretpostavlja da svi stanovi imaju jednog punoljetnog (i sposobnog) vlasnika, da su im vrijednosti jednake, te da su agenti (ako ih ima) plaćeni bez obzira na faze transakcije.

Međutim, Rosreestr ne podržava transakcije. Sve radnje će se izvoditi uzastopno i nezavisno, jedna za drugom, bez vraćanja transakcije u cjelinu ako jedna od njih ne uspije. Maksimum koji se može postići - s obzirom na to da Rosreestr i MFC ne rade sa transferom gotovine - je da se novac deponuje u sef, uz uslove za pristup njemu od strane Vasje, Petje, Serjože (ako nema transakcije je uopšte registrovan), i drugi akteri, uz predočenje ugovora registrovanih od strane Rosreestr. (I inače, banke ne provjeravaju samostalno autentičnost ugovora, odnosno vjeruju u autentičnost papira strana u transakciji).

Osim rizika od nepotpunog završetka transakcije, još jedan problem je što ako drugi učesnici mogu da se usele u svoj novi dom bez čekanja na potpunu registraciju (zdravo, pitanje nedovoljnog plaćanja komunalnih računa!), onda Maglor i Maedhros neće uskoro otići u služi Melkoru, a možda Maglor neće moći, jednostavno neće imati vremena da drži Silmarile u svojim rukama. Transakcije nekretninama se obavljaju uzastopno, a izvršenje svake transakcije će trajati najmanje 9 radnih dana.

Osim toga, Rosreestr ne podržava opterećivanje stambenih objekata koji se grade po DDU-u, ali bi mogao, ovo je elementarna akcija u odnosu na jednostavnu budućnost.

Pređimo sada na nedostatke i moje želje u vezi sa DBMS-om

1) Prvi je nedostatak sistema kontrole verzija. Ako na strani Delphija razvijam u svom vlastitom sandboxu, a promjene koje napravim neće se pojaviti drugim programerima dok ne budu urezane, onda to nije slučaj sa DBMS-om. Čak i ako mi se povjeri potpun (barem u okviru onoga što je potrebno za zadatak koji mi je dodijeljen) pristup borbenoj bazi podataka, a to se dogodi, ne mogu se razvijati na njoj. Dok budem otklanjao greške, sve će se srušiti. Kakvo je ovo kameno doba??? Napravite sandbox za programere.

2) Drugi je nedostatak unapred definisanih standardizovanih tabela koje opisuju stvarni svet. Svaka kompanija za koju sam radio ima svoj format tabele sa opisom imena (na ruskom i (barem) engleskom, u različitim padežima ruskog) dvanaest meseci!

3) Treće - i ovdje ću koristiti Oracle terminologiju - ne postoji način da se pozove jednostavna Insert ili Update skripta koja koristi Returning, na isti način na koji mi zovemo Select. Možda ovo nisu Oracle problemi, već problemi na interfejsu Delphi + Oracle.

4) Četvrto – potreba da se dodijele ovlaštenja procedurama i funkcijama koje kreiram tamo gdje to ne želim. Ne želim postavljati, a zatim mijenjati korisničke dozvole za procedure i funkcije. Zašto, ako nisam eksplicitno napisao Grants, ne bi mogao sam sistem da pogleda uključene objekte i, u skladu sa pravima da se radi sa njima, dodijeli ili ne određenim korisnicima pravo pozivanja funkcije? Spreman sam napisati jednu ključnu riječ za ovo kada pišem funkcije i procedure. Ili, još bolje, pustite korisnika da počne izvršavanje, a ako ga grana algoritma dovede do zahtjeva za koji korisnik nema prava, izbacit će ga s greškom.

izvor: www.habr.com

Dodajte komentar