Moje přání pro DBMS budoucnosti, stejně jako pro Rosreestr, pokud jde o transakci

Moje přání pro DBMS budoucnosti, stejně jako pro Rosreestr, pokud jde o transakci
Klient komunikuje s databází.
Z webu http://corchaosis.ru, od Jonathana Tionga.

Kromě toho, že jsem programátor (hlavně Delphi + všemožné různé DBMS, nově ORACLE, + trochu PHP), mám koníčka - nákup a prodej bytů. Koupím byt ve fázi výstavby od víceméně spolehlivého developera za výhodnou cenu (např. nyní je takovým developerem Samolet, byty u metra Nekrasovka jsou na prodej), čekám na předání domu (často dva let později se to stává u levných nabídek), renovuji jej a poté prodám za 95–100 % jeho tržní ceny.

Takže jsem (stejně jako všichni ostatní) čelil problému nedostatečné transakční schopnosti RosReestr.

Problém Rosreestrova nedostatku transakčních transakcí

V programování je to „Transakce“ a v oblasti nemovitostí je to „Transakce s alternativou“ (a také jako součást „Smlouva o bezpečném uložení“) a je to trochu složitější. Říkám ti.

Vasja se přišel podívat na byt, který Petya prodával. A Vasyovi se opravdu líbilo všechno, včetně ceny, ale Vasya nemá peníze. Tak začíná náš příběh.

Vasya má svůj vlastní majetek, který má některé hodnoty, které pro něj nejsou nijak zvlášť nutné - Lomonosov bydlel v sousedním domě, výška stropu je sedm a půl metru, je zde ovocná a zeleninová základna a trh Sadovod v blízkosti, můžete chodit na Aeroexpress, pod bytem je sklep o výšce 1 metr, nad bytem je půda vhodná pro astronomická pozorování. Vasya chápe, že tyto vlastnosti zvyšují cenu jeho bytu, ale ne pro něj samotného. A rozhodne se koupit Petyin byt a prodat svůj vlastní byt. Ale prodávat právě proto, abych si koupil Petyin byt, a nejen. V jazyce realitních kanceláří se tomu říká „Byla vybrána alternativa“.

Nyní se podívejme na tuto situaci z Péťiiny strany. Faktem je, že Péťa také nemá zájem sedět na amortizovaných penězích, byt prodává, aby si koupil byt v elfím městě Valinor, ale zatím se nepodíval na který. V jazyce realitních kanceláří se tomu říká „Dohoda s alternativou“.

Dva elfové Středozemě, Maglor a Maedhros, mají vhodné (podle Petyiných kritérií) nemovitosti ve městě Valinor, které je naléhavě prodáno, protože budou sloužit Melkorovi. V jazyce realitních kanceláří se tomu říká „volný prodej“.

Takže Vasya najde klienta, Seryozha. Nyní pro něj Petya nachází dvě vhodné možnosti ve městě Valinor. Chystáme se dokončit dohodu. Pro zjednodušení předpokládejme, že žádná ze stran transakce nevyužívá hypotéku a nemá jako vlastníky podíl nezletilé osoby. Nyní je tedy třeba provést následující akce:
1. Seryozha dává peníze Petyovi.
2. Vasya dává svůj byt Seryozhovi.
3. Péťa dává svůj byt Vasyovi.
4. Buď Maglor nebo Maedhros převedou svůj byt ve Valinoru na Petu a obdrží Seryozhovy peníze.
5. Malkor a Maedhros jdou do Mordoru sloužit Melkorovi.

Ideální by bylo odeslat Rosreestrovi k provedení následující skript:

ZAHÁJIT TRANSAKCI
Dejte Vasyův byt Seryozhovi.
Dejte Petyin byt Vasyovi.
začít
Dejte Malkorův byt Petyi
Dejte Seryozhovy peníze Malkorovi
IF_ERROR:
Dejte Maedhrosův byt Petyi
Dejte Seryozhovy peníze Maedhrosovi
konec
ZÁVĚREČNÁ TRANSAKCE

Jedná se o zjednodušený transakční skript s alternativou, která předpokládá, že všechny byty mají jednoho dospělého (a schopného) vlastníka, že jejich hodnoty jsou stejné a že realitní kanceláře (pokud existují) jsou placeny bez ohledu na fáze transakce.

Rosreestr však nepodporuje transakci. Všechny akce budou prováděny postupně a nezávisle, jedna po druhé, aniž by došlo k vrácení transakce jako celku, pokud jedna z nich selže. Maximum, kterého lze dosáhnout - vzhledem k tomu, že Rosreestr a MFC nepracují s převodem hotovosti - je uložit peníze do bezpečnostní schránky s podmínkami pro přístup k nim Vasya, Petya, Seryozha (pokud žádná transakce je registrován vůbec) a další aktéři, po předložení smluv registrovaných Rosreestr. (A mimochodem, banky nezávisle neověřují pravost smluv, to znamená, že důvěřují pravosti dokumentů stran transakce).

Kromě rizika neúplného dokončení transakce je dalším problémem to, že pokud se ostatní účastníci mohou přestěhovat do svého nového domova bez čekání na úplnou registraci (ahoj, problém nedoplatku účtů za energie!), Maglor a Maedhros brzy nepůjdou sloužit Melkorovi a možná to Maglor nebude schopen, prostě nebude mít čas držet silmarily ve svých rukou. Transakce s nemovitostmi se provádějí postupně a provedení každé transakce bude trvat nejméně 9 pracovních dnů.

Rosreestr navíc nepodporuje zatěžování bytů budovaných v rámci DDU, ale mohl by, jde o elementární akci ve vztahu k jednoduché budoucnosti.

Nyní přejděme k nedostatkům a mým přáním ohledně DBMS

1) Prvním je absence systému správy verzí. Pokud na straně Delphi vyvíjím ve své vlastní karanténě a změny, které udělám, se ostatním programátorům nezobrazí, dokud nebudou potvrzeny, pak to není případ DBMS. A i když je mi svěřen plný (alespoň v rozsahu nutném pro mě svěřený úkol) přístup do bojové databáze, a to se stane, nemohu na ní vyvíjet. Zatímco budu ladit, všechno se zhroutí. Co je to za dobu kamennou??? Vytvořte sandbox pro vývojáře.

2) Druhým je nedostatek předem definovaných standardizovaných tabulek popisujících skutečný svět. Každá společnost, pro kterou jsem pracoval, má svůj vlastní formát tabulky popisující názvy (v ruštině a (alespoň) angličtině, v různých případech ruštiny) dvanácti měsíců!

3) Za třetí – a zde budu používat terminologii Oracle – neexistuje způsob, jak zavolat jednoduchý skript Insert nebo Update, který používá Returning, stejným způsobem, jakým nazýváme Select. Možná to nejsou problémy Oracle, ale problémy na rozhraní Delphi + Oracle.

4) Za čtvrté – nutnost přidělovat pravomoci procedurám a funkcím, které vytvářím, tam, kde to nechci. Nechci nastavovat a následně měnit uživatelská oprávnění pro procedury a funkce. Proč, když jsem výslovně nenapsal Granty, nemohl by se samotný systém podívat na příslušné objekty a v souladu s právy jednat s nimi udělit nebo neudělit určitým uživatelům právo volat funkci? Jsem připraven k tomu napsat jedno klíčové slovo při psaní funkcí a procedur. Nebo ještě lépe nechat uživatele spustit provádění a pokud ho větev algoritmu navede na požadavek, ke kterému uživatel nemá práva, vyhodí jej s chybou.

Zdroj: www.habr.com

Přidat komentář