
Клиентът взаимодейства с базата данни.
от сайта , автор на картината Jonathan Tiong.
Освен че съм програмист (предимно Delphi и различни бази данни, напоследък ОРАКЛ, и малко PHP), имам хоби - купуване и продаване на апартаменти. Купувам апартамент на етап строителство от надежден строител на добра цена (например, в момента такъв строител е Самолет, апартаменти в близост до метростанция Некрасовка се продават), изчаквам завършването на сградата (често с две години закъснение, с евтини предложения това се случва), правя ремонт в него и след това го продавам за 95-100% от пазарната му цена.
Така че, аз (както всички) се сблъсках с проблема за липсата на транзакционност при Росреестр.
Проблемът с липсата на транзакционност при сделките с Росреестр
В програмирането "Транзакция", а в недвижимостите това е "Сделка с алтернатива" (както и свързаната част, "Договор за банково хранилище"), и там всичко е малко по-сложно. Разказвам.
Вася дойде да разгледа апартамента, който продава Петя. И на Вася всичко много му хареса, включително цената, но Вася няма пари. Така започва нашата история.
Вася притежава своя недвижимост, която има някакви не особено важни за него стойности - в съседната сграда е живял Ломоносов, височината на таваните е седем и половина метра, наблизо има склад за плодове и зеленчуци и пазар Садовод, може да се стигне пеша до Аерексрес, под апартамента има мазе с височина 1 метър, над апартамента има таван, удобен за астрономически наблюдения. Вася разбира, че тези особености увеличават цената на апартамента му, но не за него самия. И той решава да купи апартамента на Петя, а своя апартамент - да продаде. Но да продаде именно, за да купи апартамента на Петя, а не просто така. На езика на брокерите това се нарича - "Алтернатива подбрана".
Сега да погледнем на тази ситуация от гледна точка на Петя. Факт е, че и на Петя не му е интересно да стои на обезценяващи се пари, той продава апартамента, за да купи апартамент в елфийския град Валинор, но кой точно - още не е гледал. На езика на брокерите това се нарича - "Сделка с алтернатива".
Двама елфи от Средиземие, Маглор и Маэдрос, разполагат с подходяща недвижимост в града Валинор, която бързо продават, тъй като заминават да служат на Мелкор. На езика на недвижимостите това се нарича - „Свободна продажба“.
И така, Васил намира клиент на име Серьожа. Сега Петя намира два подходящи варианта в града Валинор. Преминаваме към оформянето на сделката. Да предположим за простота, че никой от участниците в сделката не ползва ипотека и няма притежатели на дялове, които да са малолетни. Така че сега трябва да се извършат следните действия:
1. Серьожа предава парите на Петя.
2. Васил предава апартамента си на Серьожа.
3. Петя предава апартамента си на Васил.
4. Или Маглор, или Маэдрос, предават апартамента си в Валинор на Петя и получават парите на Серьожа.
5. Малкор и Маэдрос отиват в Мордор да служат на Мелкор.
Идеалното би било да се предаде следният скрипт на Росреестър за изпълнение:
START TRANSACTION
Апартаментът на Васил да бъде отнет на Серьожа.
Апартаментът на Петя да бъде отнет на Васил.
begin
Апартаментът на Малкор да бъде отнет на Петя
Парите на Серьожа да се предадат на Малкор
IF_ERROR:
Апартаментът на Маэдрос да бъде отнет на Петя
Парите на Серьожа да се предадат на Маэдрос
end
COMMIT TRANSACTION
Това е опростен скрипт на сделка с алтернатива, предполагащ, че всички апартаменти имат по един възрастен (и правоспособен) собственик, че стойностите им са равни и че плащането на брокерите (ако има такива) се извършва извън етапите на сделката.
Обаче, Росреестър не поддържа транзакционност. Всички действия ще бъдат извършвани последователно и независимо едно от друго, без възстановяване на транзакцията като цяло, ако не е изпълнено едно от тях. Най-много, което може да се постигне - като се има предвид, че Росреестър и МФЦ не работят с предаване на налични средства - е да се вложат парите в банково помещение с условия за достъп до тях за Васил, Петя, Серьожа (ако изобщо не е регистрирана никаква сделка) и други действующи лица, при фактическото предявяване на регистрираните от Росреестър договори. (И между другото, банките не извършват сама проверка на автентичността на договорите, т.е. доверяват се на автентичността на документите на участниците в сделката.)
Освен рисковете на непълно завършване на транзакцията, друг проблем е, че ако другите участници могат да се настанят в новото си жилище, без да чакат пълното оформяне (здравей, въпрос на неплатени комунални услуги!), Маглор и Маедрос няма скоро да заминат да служат на Мелкор, и е възможно Маглор да не успее да задържи силмарилите в ръцете си, просто няма да има време. Сделките с недвижими имоти се извършват последователно и оформянето на всяка сделка ще отнеме не по-малко от 9 работни дни.
Освен това, Росреестр не поддържа обременяване на строящо се по ДДУ жилище, а би могъл, това е елементарно действие по отношение на прост фючърс.
Сега да преминем към недостатъците и моите желания относно СУБД
1) Първото — това е отсъствието на система за контрол на версиите. Докато отстрани Delphi аз разработвам в собствената си песочница, и направените от мен промени няма да се появят при другите програмисти, докато не бъдат комитнати, с СУБД не е така. И дори ако ми се доверява пълен (поне в рамките на необходимото за поставената пред мен задача) достъп до работната БД, а такова случва се, не мога да разработвам на нея. Докато се отстранявам, всичко ще се срине. Какво е това, каменната епоха??? Направете песочница за разработчиците.
2) Второто — това е отсъствието на предварително зададени стандартизирани таблици, описващи реалния свят. Във всяка компания, в която съм работил, има свой собствен формат на таблицата, описваща имената (на руски и (поне) английски език, в различни падежи на руския език) на дванадесетте месеца!
3) Третото — и тук ще използвам терминологията на Оракъл — липсва възможността да се извика прост скрипт Insert или Update, използващ Returning, так, както извикваме Select. Вероятно, това не са проблеми на Оракъл, а проблеми на свързването на Delphi + Oracle.
4) Четвърто — необходимост от назначаване на пълномощия на процедурите и функциите, които създавам, там, където не искам да го правя. Не искам да задавам, а после да променям, пълномощията на потребителите за процедурата и функцията. Защо, ако не съм написал изрично Grant-ове, системата не може сама да погледне на активираните обекти и в зависимост от правата за действия с тях да надели или не определени потребители с правото да извикват функцията? Готов съм да напиша за това едно ключово слово при написването на функции и процедури. Или, още по-добре, нека потребителят започне изпълнението, а ако клонът на алгоритъма го доведе до заявка, за която потребителят няма права, да изхвърли с грешка.
Източник: habr.com
