Kelajakdagi DBMSga, shuningdek, tranzaksiyaviylik nuqtai nazaridan Rosreestrga tilaklarim

Kelajakdagi DBMSga, shuningdek, tranzaksiyaviylik nuqtai nazaridan Rosreestrga tilaklarim
Mijoz ma'lumotlar bazasi bilan o'zaro ishlaydi.
Saytdan http://corchaosis.ru, Jonatan Tiong tomonidan.

Men dasturchi ekanligimdan tashqari (asosan Delphi + har xil DBMSlar, yaqinda ORACLE, + ozgina PHP), mening sevimli mashg'ulotim bor - kvartiralarni sotib olish va sotish. Men qurilish bosqichida kvartirani ko'proq yoki kamroq ishonchli ishlab chiqaruvchidan yaxshi narxda sotib olaman (masalan, hozir Samolet shunday ishlab chiqaruvchi, Nekrasovka metro bekati yaqinidagi kvartiralar sotiladi), uyni etkazib berishni kuting (ko'pincha ikkita yillar o'tib, bu arzon takliflar bilan sodir bo'ladi), men uni yangilayman va keyin uni bozor narxining 95-100% ga sotaman.

Shunday qilib, men (boshqalar kabi) RosReestrning tranzaksiya qobiliyatining yo'qligi muammosiga duch keldim.

Rosreestrning tranzaksiya operatsiyalari yo'qligi muammosi

Dasturlashda bu "Tranzaktsiya", ko'chmas mulkda esa "Muqobil bilan operatsiya" (shuningdek, uning bir qismi sifatida "Kassa shartnomasi") va bu biroz murakkabroq. Men sizga aytyapman.

Vasya Petya sotayotgan kvartirani ko'rish uchun keldi. Va Vasyaga hamma narsa, shu jumladan narx ham yoqdi, lekin Vasyada pul yo'q. Bizning hikoyamiz shunday boshlanadi.

Vasyaning o'ziga xos mulki bor, u o'zi uchun juda zarur bo'lmagan qadriyatlarga ega - Lomonosov qo'shni uyda yashagan, shift balandligi etti yarim metr, meva-sabzavot bazasi va Sadovod bozori mavjud. yaqin atrofda siz Aeroexpressda yurishingiz mumkin, kvartiraning tagida balandligi 1 metr bo'lgan podval bor, astronomik kuzatishlar uchun qulay bo'lgan kvartiraning tepasida chodir bor. Vasya bu xususiyatlar uning kvartirasining narxini oshirishini tushunadi, lekin o'zi uchun emas. Va u Petyaning kvartirasini sotib olishga va o'z kvartirasini sotishga qaror qiladi. Ammo Petyaning kvartirasini sotib olish uchun emas, balki aniq sotish. Rieltorlar tilida bu "Muqobil tanlandi" deb ataladi.

Keling, bu vaziyatni Petya tomonidan ko'rib chiqaylik. Gap shundaki, Petya ham pulni qadrsizlantirishda o'tirishdan manfaatdor emas, u o'ziga elven shahridagi Valinorda kvartira sotib olish uchun kvartirani sotmoqda, ammo u qaysi biri haqida hali qaramagan. Rieltorlar tilida bu “Muqobil bilan bitim” deb ataladi.

O'rta Yerning ikki elflari, Maglor va Maedhros, Valinor shahrida mos keladigan (Petya mezonlariga ko'ra) ko'chmas mulkka ega bo'lib, ular Melkorga xizmat qilish uchun zudlik bilan sotiladi. Rieltorlar tilida bu "Bepul sotish" deb ataladi.

Shunday qilib, Vasya mijozi Seryojani topadi. Endi Petya Valinor shahrida o'zi uchun ikkita mos variantni topadi. Biz kelishuvni yakunlash arafasidamiz. Oddiylik uchun bitim taraflarining hech biri ipotekadan foydalanmaydi va aktsiyadorlar sifatida voyaga etmaganlar yo'q deb faraz qilaylik. Shunday qilib, endi quyidagi harakatlar bajarilishi kerak:
1. Seryozha Petyaga pul beradi.
2. Vasya o'z kvartirasini Seryojaga beradi.
3. Petya o'z kvartirasini Vasyaga beradi.
4. Maglor yoki Maedhros Valinordagi kvartirasini Petaga o'tkazadi va Seryojaning pulini oladi.
5. Malkor va Maedhros Melkorga xizmat qilish uchun Mordorga boradilar.

Rosreestrga quyidagi skriptni bajarish uchun yuborish ideal bo'ladi:

TRONAKSIYANI BOSHLASH
Vasyaning kvartirasini Seryojaga bering.
Petyaning kvartirasini Vasyaga bering.
boshlang
Malkorning kvartirasini Petyaga bering
Seryojaning pulini Malkorga bering
IF_ERROR:
Petyaga Maedhrosning kvartirasini bering
Seryojaning pulini Maedrosga bering
oxiri
OMONTAJNI BAJARISH

Bu muqobilga ega soddalashtirilgan tranzaksiya skripti bo'lib, u barcha kvartiralarning bitta kattalar (va qobiliyatli) egasiga ega ekanligini, ularning qiymatlari teng ekanligini va rieltorlarga (agar mavjud bo'lsa) bitim bosqichlaridan qat'i nazar, to'lanishini nazarda tutadi.

Biroq, Rosreestr tranzaksiyani qo'llab-quvvatlamaydi. Barcha harakatlar ketma-ket va mustaqil ravishda birin-ketin amalga oshiriladi, agar ulardan biri muvaffaqiyatsiz bo'lsa, tranzaksiya umuman bekor qilinmasdan. Rosreestr va MFC naqd pul o'tkazmalari bilan ishlamayotganligini hisobga olsak, erishish mumkin bo'lgan maksimal narsa - bu pulni Vasya, Petya, Seryojaning kirish shartlari bilan seyfga qo'yishdir (agar operatsiya bo'lmasa). umuman ro'yxatdan o'tgan) va boshqa aktyorlar, Rosreestr tomonidan ro'yxatga olingan shartnomalar taqdim etilganda. (Aytgancha, banklar shartnomalarning haqiqiyligini mustaqil ravishda tekshirmaydilar, ya'ni ular bitim taraflarining hujjatlarining haqiqiyligiga ishonadilar).

Tranzaktsiyaning to'liq bajarilmasligi xavfidan tashqari, yana bir muammo shundaki, agar boshqa ishtirokchilar to'liq ro'yxatdan o'tishni kutmasdan o'zlarining yangi uylariga ko'chib o'tishlari mumkin bo'lsa (salom, kommunal to'lovlarni to'lash masalasi!), Maglor va Maedhros tez orada borishmaydi. Melkorga xizmat qiladi va ehtimol Maglor bunga qodir emas, u Silmarillarni qo'lida ushlab turishga vaqt topolmaydi. Ko'chmas mulk bilan bog'liq operatsiyalar ketma-ketlikda amalga oshiriladi va har bir bitimning bajarilishi kamida 9 ish kunini oladi.

Bundan tashqari, Rosreestr DDU ostida qurilayotgan uy-joylarning og'irligini qo'llab-quvvatlamaydi, ammo bu oddiy fyuchersga nisbatan elementar harakat bo'lishi mumkin.

Endi DBMS haqidagi kamchiliklar va mening tilaklarimga o'tamiz

1) Birinchisi, versiyani boshqarish tizimining yo'qligi. Agar Delphi tomonida men o'zimning sandboximda ishlab chiqsam va men kiritgan o'zgarishlar ular amalga oshirilgunga qadar boshqa dasturchilarga ko'rinmasa, bu DBMS bilan bog'liq emas. Va agar menga jangovar ma'lumotlar bazasiga to'liq (hech bo'lmaganda menga topshirilgan vazifani bajarish uchun zarur bo'lgan doirasida) ishonchim komil bo'lsa va bu sodir bo'lsa ham, men uni rivojlantira olmayman. Men disk raskadrovka qilayotganimda, hammasi buziladi. Bu qanday tosh davri??? Ishlab chiquvchilar uchun sandbox yarating.

2) Ikkinchisi - real dunyoni tavsiflovchi oldindan belgilangan standartlashtirilgan jadvallarning yo'qligi. Men ishlagan har bir kompaniya o'n ikki oylik nomlarni (rus va (hech bo'lmaganda) ingliz tilida, rus tilining turli holatlarida) tavsiflovchi o'z jadval formatiga ega!

3) Uchinchidan - va bu erda men Oracle terminologiyasidan foydalanaman - Qaytishdan foydalanadigan oddiy Insert yoki Update skriptini, xuddi Select deb ataganimiz kabi chaqirishning hech qanday usuli yo'q. Ehtimol, bu Oracle muammolari emas, balki Delphi + Oracle interfeysidagi muammolardir.

4) To'rtinchidan - men buni qilishni istamagan joyda yaratadigan protseduralar va funktsiyalarga vakolatlar berish zarurati. Men protseduralar va funktsiyalar uchun foydalanuvchi ruxsatlarini o'rnatishni va keyin o'zgartirishni xohlamayman. Nega, agar men Grantlarni aniq yozmagan bo'lsam, tizimning o'zi jalb qilingan ob'ektlarni ko'rib chiqa olmadi va ular bilan ishlash huquqiga ko'ra, ba'zi foydalanuvchilarga funktsiyani chaqirish huquqini beradi yoki bermasdi? Funksiyalar va protseduralarni yozishda men buning uchun bitta kalit so'z yozishga tayyorman. Yoki undan ham yaxshisi, foydalanuvchi bajarishni boshlashiga ruxsat bering va agar algoritm bo'limi uni foydalanuvchi huquqlariga ega bo'lmagan so'rovga olib kelsa, u xato bilan uni tashlab yuboradi.

Manba: www.habr.com

a Izoh qo'shish