Veids, kā CTRL-C programmā Postgres CLI atceļ vaicājumus, ir neticami uzlauzts | Mewayz Blog Skip to main content
Hacker News

Veids, kā CTRL-C programmā Postgres CLI atceļ vaicājumus, ir neticami uzlauzts

komentāri

11 min read Via neon.com

Mewayz Team

Editorial Team

Hacker News

SIGINT ieilgušais spoks: kāpēc Postgres CLI vaicājuma atcelšana šķiet uzlauzta

Izstrādātājiem un datu bāzu administratoriem PostgreSQL komandrindas saskarne (psql) ir uzticams ikdienas draiveris. Tas ir spēcīgs, precīzs un visuresošs. Tomēr viena no tās būtiskākajām mijiedarbībām — bēgoša vaicājuma atcelšana, izmantojot universālo īsinājumtaustiņu CTRL-C — šķiet nevietā. Atšķirībā no daudzām mūsdienu lietojumprogrammām, kur komanda vienkārši aptur pašreizējo darbību, psql, CTRL-C faktiski neatceļ vaicājumu serverī. Tā vietā tas atceļ klienta gaidīšanu līdz rezultātam, atstājot vaicājumu potenciāli izkliedētam datu bāzes serverī. Šī uzvedība nav kļūda; tas ir dizaina artefakts, kas atklāj mūsu rīku daudzslāņu, dažreiz trauslo arhitektūru. Uzņēmumiem, kas balstās uz modulārām sistēmām, piemēram, Mewayz, šīs pamatā esošās realitātes izpratne ir būtiska, lai izstrādātu stabilus, uz lietotāju orientētus darbības slāņus.

Pastāsts par diviem procesiem: klients pret serveri

"Hack-y" sajūtas pamatā ir psql arhitektūra. Kad izpildāt vaicājumu psql, darbojas divi neatkarīgi procesi: psql klienta process jūsu lokālajā datorā un postgres servera process datu bāzes resursdatorā. Nospiežot taustiņu kombināciju CTRL-C, tiek nosūtīts SIGINT (pārtraukuma signāls) īpaši psql klienta procesam. Klienta tūlītējais uzdevums ir pārtraukt gaidīt un atgriezties pie uzvednes, ko tas arī dara. Tomēr serverim nav raksturīgu zināšanu par šo klienta puses signālu. No viedokļa vaicājums joprojām ir derīga darbība. Atcelšanas pieprasījums ir jāpaziņo kā atsevišķa jauna instrukcija.

"Psql CTRL-C ir mazāka poga "stop" un drīzāk "lūdzu ignorēt manu iepriekšējo pieprasījumu", ko jūs nododat aizņemtam bibliotekāram, kamēr viņš jau ir pusceļā uz skursteņiem.

Atcelšanas protokols: sekundārais pieprasījums

Tātad, kā vaicājums faktiski tiek atcelts? Pēc SIGINT apstrādes labi izturīgs psql klients uzsāk PostgreSQL oficiālo atcelšanas protokolu. Tas ietver pilnīgi jauna savienojuma atvēršanu ar serveri un īpaša "atcelšanas pieprasījuma" ziņojuma nosūtīšanu, kas satur slepeno atslēgu, kas identificē konkrēto aizmugursistēmas procesu, kas izpilda jūsu vaicājumu. Šis pieprasījums tiek apstrādāts ar zemu prioritāti, un tas negarantē tūlītēju panākumu. Šis daudzpakāpju, aizdedzes un aizmirstības process ir iemesls, kāpēc uzvedība šķiet netieša. Tas nav tiešs pārtraukums; tas ir pieklājīgs, asinhrons lūgums, kas nosūtīts caur atpakaļkanālu.

Lietotāju pieredzes atšķirības un malas gadījumi

Šis dizains lietotājiem rada vairākus taustāmus berzes punktus:

  • Paredzama nereaģēšana: nospiežot taustiņu kombināciju CTRL-C, nekavējoties saņemat uzvedni, taču sistēmas slodze joprojām ir augsta, jo serveris joprojām darbojas.
  • Neskaidrs rezultāts: jums nav tūlītēja apstiprinājuma, vai serveris ir saņēmis vai izpildījis atcelšanas pieprasījumu.
  • No savienojuma atkarīga kļūme: ja serverim ir ugunsmūris vai jaunais savienojums atcelšanas pieprasījumam neizdodas, sākotnējais vaicājums tiek aktivizēts uz nenoteiktu laiku.
  • Psiholoģiskā neatbilstība: universālā komanda “abort” neveic sinhronu pārtraukšanu, tādējādi pārkāpjot lietotāju cerības, kas veidojas citur skaitļošanas vidē.

Izmantojot apzinātus pamatus, izmantojot Mewayz

Mūsdienu biznesa operētājsistēmām ir jānovērš šīs pamatā esošās sarežģītības, vienlaikus ievērojot to ierobežojumus. Tāda platforma kā Mewayz, kas darbojas kā modulāra biznesa operētājsistēma, iekapsulētu datu bāzes mijiedarbību pārvaldītajos pakalpojumu moduļos. Piemēram, Mewayz datu vaicājuma modulis ne tikai parāda neapstrādātu SQL uzvedni; tas aptvertu to ar lietotājam draudzīgām vadīklām — īstu, pārbaudāmu "apturēšanas" pogu, vaicājuma taimautu un reāllaika statusa informācijas paneļiem, kas parāda, kas patiešām darbojas serverī. Tas pārceļ pieredzi no protokola dīvainību risināšanas uz skaidru, praktisku biznesa operāciju pārvaldību. Mācība no psql CTRL-C ir tāda, ka lieliski rīki ne tikai atklāj jaudīgas iespējas; viņi izstrādā intuitīvus un uzticamus interfeisus, pārvēršot arhitektūras mantojumu nevainojamās darbplūsmās. Izprotot uzlaušanu, tiek atklāta iespēja izveidot kaut ko labāku.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Bieži uzdotie jautājumi

SIGINT ilgstošais spoks: kāpēc Postgres CLI vaicājuma atcelšana šķiet uzlauzta

Izstrādātājiem un datu bāzu administratoriem PostgreSQL komandrindas saskarne (psql) ir uzticams ikdienas draiveris. Tas ir spēcīgs, precīzs un visuresošs. Tomēr viena no tās būtiskākajām mijiedarbībām — bēgoša vaicājuma atcelšana, izmantojot universālo īsinājumtaustiņu CTRL-C — šķiet nevietā. Atšķirībā no daudzām mūsdienu lietojumprogrammām, kur komanda vienkārši aptur pašreizējo darbību, psql, CTRL-C faktiski neatceļ vaicājumu serverī. Tā vietā tas atceļ klienta gaidīšanu līdz rezultātam, atstājot vaicājumu potenciāli pārtrūktam datu bāzes serverī. Šī uzvedība nav kļūda; tas ir dizaina artefakts, kas atklāj mūsu rīku daudzslāņu, dažreiz trauslo arhitektūru. Uzņēmumiem, kas balstās uz modulārām sistēmām, piemēram, Mewayz, šīs pamatā esošās realitātes izpratne ir būtiska, lai izstrādātu stabilus, uz lietotāju orientētus darbības slāņus.

Pastāsts par diviem procesiem: klients pret serveri

"Hack-y" sajūtas pamatā ir psql arhitektūra. Kad izpildāt vaicājumu psql, darbojas divi neatkarīgi procesi: psql klienta process jūsu lokālajā datorā un postgres servera process datu bāzes resursdatorā. Nospiežot taustiņu CTRL-C, tiek nosūtīts SIGINT (pārtraukšanas signāls) īpaši psql klienta procesam. Klienta tūlītējais uzdevums ir pārtraukt gaidīt un atgriezties pie uzvednes, ko tas arī dara. Tomēr serverim nav raksturīgu zināšanu par šo klienta puses signālu. No viedokļa vaicājums joprojām ir derīga darbība. Atcelšanas pieprasījums ir jāpaziņo kā atsevišķa jauna instrukcija.

Atcelšanas protokols: sekundārais pieprasījums

Tātad, kā vaicājums faktiski tiek atcelts? Pēc SIGINT apstrādes labi izturīgs psql klients uzsāk PostgreSQL oficiālo atcelšanas protokolu. Tas ietver pavisam jauna savienojuma atvēršanu ar serveri un īpaša “atcelšanas pieprasījuma” ziņojuma nosūtīšanu, kas satur slepeno atslēgu, kas identificē konkrēto aizmugurprocesu, kurā tiek izpildīts jūsu vaicājums. Šis pieprasījums tiek apstrādāts ar zemu prioritāti, un tas negarantē tūlītēju panākumu. Šis daudzpakāpju, aizdedzes un aizmirstības process ir iemesls, kāpēc uzvedība šķiet netieša. Tas nav tiešs pārtraukums; tas ir pieklājīgs, asinhrons lūgums, kas nosūtīts caur atpakaļkanālu.

Lietotāju pieredzes atšķirības un malas gadījumi

Šis dizains lietotājiem rada vairākus taustāmus berzes punktus:

Izmantojot apzinātus pamatus, izmantojot Mewayz

Mūsdienu biznesa operētājsistēmām ir jānovērš šīs pamatā esošās sarežģītības, vienlaikus ievērojot to ierobežojumus. Tāda platforma kā Mewayz, kas darbojas kā modulāra biznesa operētājsistēma, iekapsulētu datu bāzes mijiedarbību pārvaldītajos pakalpojumu moduļos. Piemēram, Mewayz datu vaicājuma modulis ne tikai parāda neapstrādātu SQL uzvedni; tas aptvertu to ar lietotājam draudzīgām vadīklām — īstu, pārbaudāmu "apturēšanas" pogu, vaicājuma taimautu un reāllaika statusa informācijas paneļiem, kas parāda, kas patiešām darbojas serverī. Tas pārceļ pieredzi no protokola dīvainību risināšanas uz skaidru, praktisku biznesa operāciju pārvaldību. Mācība no psql CTRL-C ir tāda, ka lieliski rīki ne tikai atklāj jaudīgas iespējas; viņi izstrādā intuitīvus un uzticamus interfeisus, pārvēršot arhitektūras mantojumu nevainojamās darbplūsmās. Izprotot uzlaušanu, tiek atklāta iespēja izveidot kaut ko labāku.

Visi jūsu uzņēmuma rīki vienuviet

Pārtrauciet žonglēt ar vairākām lietotnēm. Mewayz apvieno 208 rīkus tikai par USD 49 mēnesī — no krājumiem līdz personāla vadībai, rezervēšanai un analītikai. Lai sāktu, nav nepieciešama kredītkarte.

Izmēģiniet Mewayz Free →

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

POS & Payments Guide →

Accept payments anywhere: POS terminals, online checkout, multi-currency, and real-time inventory sync.

Start managing your business smarter today

Join 6,208+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,208+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime