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

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

Osim što sam programer (uglavnom Delphi + raznorazni DBMS-i, odnedavno ORACLE, + malo PHP) imam hobi - kupoprodaja stanova. Kupujem stan u fazi izgradnje od više ili manje pouzdanog programera po povoljnoj cijeni (na primjer, sada je Samolet takav programer, prodaju se stanovi u blizini metro stanice Nekrasovka), čekam da se kuća isporuči (često dvije godina kasnije, to se događa s jeftinim ponudama), renoviram ga i zatim ga prodam za 95-100% njegove tržišne cijene.

Dakle, ja sam se (kao i svi drugi) suočio s problemom nedostatka transakcije RosReestra.

Problem Rosreestrova nedostatka transakcijskih transakcija

U programiranju je to “Transakcija”, a u nekretninama “Transakcija s alternativom” (a u sklopu toga i “Ugovor o sefu”), i to je malo kompliciranije. Govorim ti.

Vasya je došao pogledati stan koji je Petya prodavao. I Vasji se jako svidjelo sve, uključujući i cijenu, ali Vasja nema novca. Ovako počinje naša priča.

Vasya ima svoju nekretninu, koja ima neke vrijednosti koje mu nisu posebno potrebne - Lomonosov je živio u susjednoj kući, visina stropa je sedam i pol metara, postoji baza voća i povrća i tržnica Sadovod u blizini se može prošetati Aeroexpressom, ispod stana je podrum visine 1 metar, iznad stana je tavan pogodan za astronomska promatranja. Vasya razumije da te značajke povećavaju cijenu njegovog stana, ali ne za sebe. I odlučuje kupiti Petyin stan i prodati svoj stan. Ali prodaje se upravo kako bi se kupio Petyin stan, a ne samo. Jezikom trgovaca nekretninama to se zove "Odabrana je alternativa".

Pogledajmo sada ovu situaciju s Petyine strane. Činjenica je da Petya također nije zainteresiran sjediti na obezvrijeđenom novcu, on prodaje stan kako bi si kupio stan u vilenjačkom gradu Valinoru, ali još nije pogledao koji. Jezikom trgovaca nekretninama, to se zove "Dogovor s alternativom".

Dva vilenjaka iz Međuzemlja, Maglor i Maedhros, imaju prikladnu (prema Petyinim kriterijima) nekretninu u gradu Valinoru, koja se hitno prodaje, jer će služiti Melkoru. Jezikom trgovaca nekretninama to se zove "slobodna prodaja".

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

Bilo bi idealno predati sljedeću skriptu Rosreestru na izvršenje:

POKRENI TRANSAKCIJU
Dajte Vasjin stan Serjoži.
Dajte Petjin stan Vasji.
krene
Daj Malkorov stan Petji
Daj Seryozhin novac Malkoru
IF_ERROR:
Daj Maedhrosov stan Petyi
Daj Seryozhin novac Maedhrosu
kraj
IZVRŠI TRANSAKCIJU

Ovo je pojednostavljena transakcijska skripta s alternativom, koja pretpostavlja da svi stanovi imaju jednog punoljetnog (i poslovno sposobnog) vlasnika, da su njihove vrijednosti jednake i da su posrednici (ako postoje) plaćeni bez obzira na faze transakcije.

Međutim, Rosreestr ne podržava transakcijsku vrijednost. Sve radnje će se izvoditi uzastopno i neovisno, jedna za drugom, bez vraćanja transakcije u cjelini ako jedna od njih ne uspije. Maksimalno što se može postići - s obzirom da Rosreestr i MFC ne rade s prijenosom gotovine - je položiti novac u sef, uz uvjete da mu pristupe Vasya, Petya, Seryozha (ako nema transakcije je uopće registriran), i drugi akteri, nakon predočenja ugovora koje je registrirao Rosreestr. (Usput, banke ne provjeravaju samostalno vjerodostojnost ugovora, odnosno vjeruju vjerodostojnosti papira stranaka u transakciji).

Osim rizika nepotpunog dovršetka transakcije, još jedan problem je taj što ako se drugi sudionici mogu useliti u svoj novi dom bez čekanja na potpunu registraciju (pozdrav, problem neplaćanja komunalnih računa!), tada Maglor i Maedhros neće uskoro otići u služiti Melkoru, a možda Maglor neće moći, jednostavno neće imati vremena držati Silmarile u svojim rukama. Transakcije nekretnina odvijaju se sekvencijalno, a izvršenje svake transakcije trajat će najmanje 9 radnih dana.

Osim toga, Rosreestr ne podržava opterećenje stambenih objekata koji se grade prema DDU, ali bi mogao, to je elementarna radnja u odnosu na jednostavne budućnosti.

Sada prijeđimo na nedostatke i moje želje o DBMS-u

1) Prvi je nedostatak sustava za kontrolu verzija. Ako na strani Delphija razvijam u vlastitom sandboxu, a promjene koje napravim neće biti vidljive drugim programerima dok se ne predaju, to nije slučaj sa DBMS-om. Pa čak i ako mi se povjeri puni (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 ispravljam greške, sve će se srušiti. Kakvo je ovo kameno doba??? Napravite sandbox za programere.

2) Drugi je nedostatak unaprijed definiranih standardiziranih tablica koje opisuju stvarni svijet. Svaka tvrtka za koju sam radio ima vlastiti format tablice koja opisuje nazive (na ruskom i (barem) engleskom, u različitim slučajevima ruskog) dvanaest mjeseci!

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 zovemo Select. Možda to nisu Oracle problemi, već problemi na sučelju Delphi + Oracle.

4) Četvrto - potreba za dodjeljivanjem ovlasti procedurama i funkcijama koje kreiram tamo gdje to ne želim učiniti. Ne želim postavljati, a zatim mijenjati korisnička dopuštenja za postupke i funkcije. Zašto, ako nisam eksplicitno napisao Grants, sam sustav ne bi mogao pogledati uključene objekte i, u skladu s pravima za djelovanje s njima, dati 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 krene s izvršenjem, pa ako ga grana algoritma dovede do zahtjeva za koji korisnik nema prava, izbacit će ga s greškom.

Izvor: www.habr.com

Dodajte komentar