Net-Base Revistë

14.06.2026

Ristrukturim i bazës së të dhënave për softuerin e zhvilluar me kalimin e kohës Delphi: modernizim i sigurt pa ndërprerje

Një rindërtim i bazës së të dhënave në softuer të zhvilluar me kalimin e kohës Delphi është më pak një 'projekt SQL' dhe më shumë një ndërhyrje në operim, ndërfaqe dhe përgjegjësi për të dhënat. Ky artikull tregon se si të kontrolloni rreziqet, të bëni migrimet të testueshme dhe të mbani përditshmërinë e IT-së dhe të departamentit funksional të qëndrueshme...

14.06.2026

Nga tema e revistës në praktikën e projektit

Faqe shërbimi dhe teknike të përshtatshme për artikullin

Në shumicën e rasteve, një ristrukturim i bazës së të dhënave në një softuer Delphi të zhvilluar me kalimin e kohës rrallë herë është thjesht një shkëmbim tabelash ose një “skemë e re”. Në praktikë, në bazën e të dhënave mbështetet shpesh gjithçka që duhet të funksionojë përditë në kompani: dokumente, të dhëna themelore, historikat, integrimet me ERP/DMS/CRM, raportimet, autorizimet dhe, jo më pak e rëndësishme, pritshmëria që operimi të mbetet i qëndrueshëm gjatë ndryshimit.

Shumë aplikacione Delphi kanë evoluar në mënyrë të besueshme gjatë viteve. Kjo është pikërisht forca e tyre – por edhe arsyeja pse ndryshimet në bazën e të dhënave janë të ndjeshme. Logjika funksionale nuk gjendet vetëm në kod, por edhe në procedurat e ruajtura, trigger-at, konventat implicite dhe në të dhëna që “gjithmonë kanë qenë kështu”. Kush modernizon këtu pa strukturë, rrezikon ndërprerje, të dhëna të inkonsistente dhe skenarë gabimesh që mund të shfaqen vetëm javë më vonë.

Ky artikull përshkruan një qasje të qëndrueshme për drejtuesit e IT-së, administratorët dhe përgjegjësit teknikë të projekteve: si të planifikoni ristrukturimin, cilat kufizime teknike janë të dobishme, si të bëhen migrimet të testueshme dhe si të përmirësohen ndjeshëm siguria, mirëmbajtja dhe aftësia për integrim – pa detyruar një ristart total me Big-Bang.

Pse ristrukturimi i bazës së të dhënave në projekte Delphi është veçanërisht kritik

Delphi në ndërmarrjet e mesme dhe në mjedise të specializuara shpesh është shtylla kurrizore e softuerit biznesor pranë proceseve operative. Shumë nga këto sisteme janë projektuar në kohë kur akseset në bazën e të dhënave ishin të ngushtë të lidhura me UI-në dhe logjikën e biznesit. Nga kjo rrjedhin rreziqe tipike:

  • Qasje të të dhënave fort të lidhura: deklarata SQL të shpërndara në formularë, raporte, punë pasdite dhe komponentë ndërfaqesh. Një ndryshim në skemë prek shumë vendndodhje në të njëjtën kohë.
  • Modele të dhënash të zhvilluara historikisht: “tabela universale”, përdorime të shumta të të njëjtës kolonë, tipe të përziera të të dhënave, mungesë constraints. Të dhënat janë funksionale, por të vështira për t’u validuar.
  • Kontrata të fshehta (Hidden Contracts): mjetet e jashtme, eksportet Excel, sistemet e treta ose punët batch mbështeten te emrat e kolonave, renditjet ose ID-të pa dokumentim.
  • Operacion nën ngarkesë të vazhdueshme: ristrukturimi nuk ndodh në laborator. Ka përdorues produktivë, punë, importime, përpunime natën dhe dritare mirëmbajtjeje të ngushta.

Pika vendimtare: një ristrukturim i bazës së të dhënave është një projekt arkitekturor. Ai prek përgjegjësinë për të dhënat, kontratat e ndërfaqeve, proceset operative dhe testueshmërinë në mënyrë të barabartë.

Përcaktoni qartë qëllimet: Çfarë duhet të jetë më mirë pas ristrukturimit?

Pa një përcaktim të qartë të qëllimeve, një ristrukturim shndërrohet shpejt në një çështje pa fund. Në praktikë janë provuar kategoritë e mëposhtme të qëllimeve, të cilat duhet t’i konkretizoni paraprakisht:

1) Operimi & Stabiliteti

Shembuj: dritare mirëmbajtjeje më të shkurtra, deplojime të riprodhueshme, performancë më e mirë në transaksionet thelbësore, më pak deadlock-e, kohë të planueshme për Backup/RESTore, rollback i qartë.

2) Mirëmbajtje & Zhvillim i mëtejshëm

Shembuj: versionim i bazës së të dhënave, migrime të dokumentueshme, më pak “rastet e veçanta” në aksesin e të dhënave, entitete të qarta, mbulim më i mirë i testeve në nivelin e të dhënave.

3) Siguria & Përputhshmëria

Shembuj: të drejta të qarta (parimi i privilegjeve minimale), audit-trail (ndryshime të dokumentueshme), kriptim i të dhënave në pushim dhe në tranzit, ndarja e tenantëve, akseset e kontrolluara të administratorëve.

4) Integrimi & Aftësia për ndërfaqe

Shembuj: API-të e qëndrueshme, sundimi i të dhënave i qartë, shkëputja e raportimit nga baza operative e të dhënave, procese të forta import/export.

Këto objektiva ndikojnë vendimet arkitekturore: nëse, p.sh., keni nevojë për një fazë tranzicioni me drift paralel, nëse “Zero-Downtime” është realist ose nëse do të përdorni një dritare të planifikuar mirëmbajtjeje.

Datenbank-Umbau bei gewachsener Delphi-Software: Typische Auslöser

Në ambientet ekzistuese shpesh vërejmë shkaktarë të përsëritur që detyrojnë një ristrukturim ose së paku e bëjnë atë ekonomikisht të arsyeshëm:

  • BDE-Ablösung: Die Borland Database Engine është operacionalisht e rrezikshme (driverë, varësi 32-Bit, deployment). Mjediset moderne priren të përdorin më mirë një BDE-Ablösung mit nativer Anbindung (Delphi-Datenzugriffsschicht) dhe driverë DB natyralë.
  • Ndërrimi i sistemit të bazës së të dhënave: p.sh. nga Firebird ose InterBase në PostgreSQL ose SQL Server, shpesh i nxitur nga konceptet e operimit, strategjitë HA/Backup ose standardizimi.
  • Probleme shkallëzimi: Rritja e volumit të të dhënave, numrit të përdoruesve ose të përpunimit batch çon indeksimin, bllokimet dhe planet e ekzekutimit të pyetjeve në kufij.
  • Aftësia për mandantë ose modeli i të drejtave: Kërkesat e mëvonshme godasin një model që fillimisht ishte “një mandant, një vendndodhje”.
  • Projekte ndërfaqesh: Një Kundenportal, shërbime të reja REST-Services ose integrime ERP kërkojnë kontrata të dhënash të qarta dhe të qëndrueshme.

Është e rëndësishme të mos ngatërroni shkaktarin me zgjidhjen. “Wir wechseln auf PostgreSQL” nuk është një qëllim, por një mjet. Qëllimi mund të jetë, p.sh., operim më i mirë, menaxhim i drejtë më i pastër ose zgjerim i kontrolluar.

Bestandsaufnahme: Ohne Dateninventur kein belastbarer Plan

Një planifikim i besueshëm fillon me një inventar të ftohtë të gjendjes. Ai nuk duhet të zgjasë muaj të tërë, por duhet të bëjë të dukshme varësitë kritike:

Technische Analyse

  • Schema-Landkarte: tabela, pamjet (Views), procedura, trigger-a, indekset, constraints, sekuencat/mekanizmat e identity.
  • Zugriffspfade: Ku ekzekutohet SQL? UI, Services, punë pas-skenës (Hintergrundjobs), gjeneratorë raportesh, ndërfaqe, importues.
  • Transaktionsgrenzen: Cilat procese kërkojnë transaksione të vërteta ACID (atomik, konsistent, i izoluar, i qëndrueshëm)? Ku tolerohen përditësime të pjesshme?
  • Performance-Hotspots: pyetjet kryesore, kohët e pritjes për bllokime, transaksionet e gjata, punët e natës, tabelat e mëdha.

Fachliche Analyse

  • Datenhoheit: Kush është sistemi kryesor për cilat të dhëna? Çfarë vjen nga ERP, çfarë përpunohet lokalisht?
  • Historie und Aufbewahrung: Cilat të dhëna duhet të mbeten të verifikueshme për auditim? Cilat mund të pastrohen/arkivohen?
  • Kritische Prozesse: mbyllja mujore, dërgesa, ciklet e faturimit, prodhim/BDE, certifikata ose dëshmi verifikimi.

Veçanërisht te softueri i zhvilluar Delphi pronësia funksionale e të dhënave shpesh është implicite. Kush nuk e sqaron atë, shpejt ndan “tabela më të bukura” dhe thjesht zhvendos problemet në ndërfaqe dhe operim.

Zielarchitektur für Datenzugriff: Entkoppeln, ohne alles neu zu schreiben

Leva më e madhe për reduktimin e rrezikut është qasja e kontrolluar në të dhëna. Nuk bëhet fjalë aq për gjuhën e programimit, sa për një logjikë të qartë shtresash (shpesh e quajtur arkitekturë „Layer“): UI/Client, logjika e biznesit, qasja në të dhëna. Sa më mirë të jenë të ndara këto shtresa, aq më e vogël bëhet fusha e shpërthimit gjatë ristrukturimit të skemës.

Në Delphi-Umgebungen është shpesh e arsyeshme një konsolidim: larg SQL-ve të shpërndara „ad-hoc“, drejt pikave qendrore të qasjes në të dhëna. BDE-Ablosung mit nativer Anbindung mund të ndihmojë, sepse pasqyron më strukturisht driverët, bindjen e parametrave, transaksionet dhe pooling-un. Vendimtare nuk është mjeti, por rregulla: Ndryshimet e skemës nuk duhet të kërkojnë përditësime në 200 vende të ndryshme të UI-së.

Pragmatischer Zwischenschritt: Datenbank-Fassade

Nëse një refaktorim i madh nuk është i mundur, një fasadë e bazës së të dhënave mund të ndihmojë: Views ose sinonime që paraqesin përkohësisht emrat/strukturat e vjetra të kolonave, ndërsa brenda po zhvillohet modeli i ri. Kjo nuk është një gjendje e përhershme, por një mjet i provuar për të zbatuar migrimet në mënyrë iterative.

Schema-Refactoring: Welche Umbauten sich lohnen – und welche gefährlich sind

Në ristrukturim nuk janë të gjitha ndryshimet të barabarta. Disa rrisin shpejt stabilitetin dhe cilësinë e të dhënave, të tjerat kanë pasoja të mëdha.

„Low Risk“-Verbesserungen mit hoher Wirkung

  • Shtimi i constraints: NOT NULL, Foreign Keys, indekse unike. Ato bëjnë që gabimet të bëhen të dukshme më herët dhe parandalojnë inkonsistencat që zhvillohen gradualisht.
  • Konsolidimi i tipeve të të dhënave: p.sh. ndarje e qartë midis datës/orës, shifrave numerike, ID-ve. Veçanërisht e rëndësishme për ndërfaqet dhe raportimin.
  • Indeksim sipas përdorimit: indekse përgjatë rrugëve reale të filtrimit dhe të bashkimit (Join), jo sipas intuitës.
  • Shtimi i fushave të auditimit: regjistron „kush/cfarë/kur“ (p.sh. ChangedAt, ChangedBy). Kjo është jashtëzakonisht e dobishme për operacionet dhe analizën e gabimeve.

Änderungen mit hohem Risiko (gezielt planen)

  • Ndryshimi i çelësit primar/strategjisë së ID-së: p.sh. kalimi nga çelësa të përbërë te Surrogate Keys ose anasjelltas. Kjo prek thellë logjikën, import/export-in dhe referencat.
  • Normalizimi i zonave të mëdha: i arsyeshëm nga ana funksionale, por shpesh i lidhur me përshtatje masive në formularë, raporte dhe ndërfaqe.
  • Kalimi në model multitenant: kolonat e mandantit, Row-Level-Security, particionimi i të dhënave – këtu duhet një koncept i qartë autorizimi dhe raste testimi.

Një qasje e provuar është të ndash ristrukturimin në „themeli i sigurisë dhe operimit“ (Constraints, Audit, Versionierung, Rechte) dhe „optimizimin e modelit funksional“. Kështu lind përfitimi i matshëm në një fazë të hershme, pa qenë e nevojshme të prekni menjëherë çdo proces.

Migrationsstrategie: Big Bang, Parallelbetrieb oder Schrittfolge?

Zgjedhja e strategjisë përcakton rrezikun, planin kohor dhe konceptin e operimit. Në kompani janë të përhapura tre modele:

1) Geplantes Wartungsfenster (klassische Cutover-Migration)

Ju ndërprisni aplikacionin, migroni të dhënat dhe skemën, validoni dhe bëni kalimin. Avantazh: ndarje e qartë. Disavantazh: kohë ndërprerjeje dhe presion i lartë gjatë Cutover.

2) Parallelbetrieb mit Synchronisation

Baza e të dhënave e vjetër dhe e re funksionojnë përkohësisht paralelisht. Ndryshimet replikohet ose transferohen përmes një logjike sinkronizimi. Avantazh: më pak downtime. Disavantazh: konflikte komplekse, kërkesa më të larta për monitorim dhe sovranitetin e të dhënave.

3) Schrittweise Migration pro Domäne

Ju migroni fushat funksionale njëra pas tjetrës (p.sh. të dhënat bazë së pari, pastaj dokumentet, pastaj historia). Avantazh: e kontrollueshme, e lehtë për testim. Disavantazh: gjendjet e tranzicionit kërkojnë rregulla të qarta dhe ndonjëherë adapterë të përkohshëm.

„Zero-Downtime“ është e mundur, por rrallë pa kosto. Shpesh një dritare e shkurtër, mirë e përgatitur për mirëmbajtje është më ekonomike se sinkronizimi paralel që zgjat muaj.

Sigurimi i testueshmërisë: Migrimet duhet të jenë të përsëritshme dhe të verifikueshme

Një ristrukturim i bazës së të dhënave rrallë dështon për mungesë njohurish SQL, por për shkak të pamjaftueshmërisë së mundësisë për verifikim. Dy parime janë kyçe:

Migrimet si versionim, jo si punë manuale

Përkundrejt „ndryshimeve me thirrje“, ndryshimet e skemës duhet të jenë migrime të versionuara: të numëruara qartë, me varësi, dhe të ekzekutueshme në mënyrë identike në Test/Stage/Prod. Kjo lehtëson auditimet, rikthimet dhe punën ekipore.

Validimi me kontrolle funksionale

Kontrollet teknike (Row Counts, integriteti i Foreign-Key) nuk mjaftojnë. Ju duhet plausibilitete funksionale: shumat mbi dokumentet, postimet e hapura, nivelet e stokut, zinxhirët e statusit. Këto kontrolle duhet të jenë të automatizueshme, së paku si raporte/queries të përsëritshme.

Në praktikë ka funksionuar mirë një „Migration-Runbook“: një listë kontrolli për çdo cutover me kohët, të përgjegjësit, queries për verifikim, kriteret e ndërprerjes dhe planin e rikthimit.

Operacioni & Administrimi: Backup, Recovery, Monitoring si pjesë e projektit

Një ristrukturim ndryshon jo vetëm tabelat, por edhe rutinat operative. Prandaj administrimi duhet të përfshihet herët në diskutim:

  • Strategjia Backup/RESTore: Backup i plotë, inkremental, rikuperim në pikën e kohës (Point-in-Time-Recovery). Testet e rikthimit janë më të rëndësishme se krijimi i backup-it.
  • Monitoring: metrika të bazës së të dhënave (Locks, Slow Queries, CPU/IO), kohëzgjatjet e job-eve, normat e gabimeve në ndërfaqe. Pa një baseline, „më mirë“ nuk matet.
  • Dritaret e mirëmbajtjes dhe mirëmbajtja e indekseve: Rebuild/REINDEX, përditësime të statistikave, Vacuum/Autovacuum (në PostgreSQL). Kjo duhet të përshtatet me vëllimin e të dhënave.
  • Modeli i të drejtave dhe roleve: Ndarja e App-User, Service-Accounts, Admin. Asnjë llogari „fuqi e plotë“ në aplikacione.

Sidomos nëse vini nga një konfigurim historikisht „i lehtë“, koncepti i të drejtave shpesh është një moment aha: shumë aplikacione funksionojnë me të drejta tepër të gjera, sepse më parë ishte pragmatike. Në ristrukturim kjo është mundësi për ta rregulluar në mënyrë të pastër.

Mbani parasysh ndërfaqet: Baza e të dhënave rrallë është sistemi i vetëm

Në softueret e ndërmarrjeve të zhvilluara me kalimin e kohës, ndërfaqet janë zakonisht pjesa e nënvlerësuar. Një ristrukturim i bazës së të dhënave ndryshon në mënyrë implicite kontratat e të dhënave: ID-të, tipet e të dhënave, logjika e statusit, kohët e regjistrimit.

Nëse një portal klienti, një DMS ose një ERP merr të dhëna, duhet të jetë e qartë nëse ai qaset drejtpërdrejt në bazën e të dhënave (duhet shmangur) ose përmes ndërfaqeve të përcaktuara (API, Files, ETL). API nënkupton „Ndërfaqjen e Programimit të Aplikacioneve“, dhe në operim është i rëndësishëm si një kontratë e qëndrueshme: hyrjet, daljet, rastet e gabimeve, versionimi.

Për Delphi-mjedise një hap drejt shtresës së shërbimit shpesh ka kuptim: jo sepse „Microservices“ tingëllojnë modern, por sepse ju centralizoni qasjet ndaj të dhënave dhe validimin. Kjo zvogëlon sipërfaqen e sulmit ndaj ndryshimeve të ardhshme të të dhënave.

Një kontekst i brendshëm i dobishëm për lidhje do të ishte p.sh. një artikull mbi ndërtimin e integrimeve dhe rrjedhave të të dhënave të qëndrueshme, ose mbi Delphi-modernizimin pa humbje të logjikës së fushës – të dyja kontribuojnë në të njëjtën qëllim kërkimi.

Cilësia e të dhënave dhe pastrimi: Pjesa më e vështirë shpesh është të dhënat e trashëguara

Shumë sisteme funksionojnë, edhe pse të dhënat nuk janë të pastra: rekorde themelore të dyfishta, referenca të pavlefshme, „Sammelkonten“, tekste të lira në vend të kodeve. Një skemë e re i bën këto probleme të dukshme – dhe kjo është e mirë, për sa kohë që e keni planifikuar.

Praktikë e provuar

  • Profilizim para migrimit: Cilat vlera shfaqen me të vërtetë? Cilat fusha janë në praktikë bosh? Ku ndodhen vlerat ekstreme?
  • Përcaktimi i rregullave: Çfarë lejohet në të ardhmen? Çfarë korrigjohet automatikisht? Çfarë duhet pastruar manualisht?
  • Koncepti i arkivit: Nuk është e nevojshme që gjithçka të mbetet në bazën e të dhënave operative. Historitë mund të transferohen në struktura të ndara, për sa kohë që analizat dhe auditimet vazhdojnë të funksionojnë.

E rëndësishme: Pastrimi i të dhënave është një proces me përgjegjësi funksionale. IT mund t’i realizojë rregullat teknikisht, por vendimi për cilat korrigjime janë të pranueshme duhet të merret nga ana funksionale.

Performanca pas rikonstruksionit: jo vetëm më e shpejtë, por më e parashikueshme

Një qëllim i zakonshëm është „përmirësimi i performancës“. Në praktikë „parashikueshmëria“ është edhe më e rëndësishme: kohëzgjatje të qëndrueshme, asnjë devijim i papritur, as deadlocks gjatë mbylljes mujore.

Masat teknike që kanë rezultuar efektive:

  • Transaksione të shkurtra: Veprimet në ndërfaqen e përdoruesit (UI) nuk duhet të mbajnë transaksione që zgjasin për minuta, veçanërisht në operim me shumë përdorues.
  • Indekse të synuara: Bazuar në pyetjet reale, me monitorim pas futjes në prodhim.
  • Ndarja operacionale vs. raportim: Ngarkesa e raportimit mund të prishë proceset operative. Read-Replicas, rrjedha ETL ose tabela të veçanta për raportim janë kundërmasa tipike.
  • Detyra batch të planueshme: Detyra me kohëzgjatje të përcaktuara, regjistrim (logging), mundësi rinisjeje dhe alarmim.

Një rindërtim është i suksesshëm kur jo vetëm disa pyetje janë më të shpejta, por kur operimi prodhon më pak papritshmëri.

Plani i rrezikut dhe rikthimit: Dalja emergjente duhet ndërtuar para nisjes

Rollback-i nuk është shenjë pesimizmi, por menaxhim profesional i rrezikut. Një plan i qëndrueshëm përgjigjet:

  • Kur ndërpritet? Kritere të qarta ndërprerjeje (p.sh. kontrolle validimi dështojnë, kohëzgjatja tejkalon pragun).
  • Kthimi në çfarë? Snapshot/Backup i bazës së vjetër të të dhënave, version i përcaktuar i aplikacionit, gjendja e konfigurimit.
  • Si do të komunikohen? Kush njofton njësinë funksionale, kush vendos, kush dokumenton?

Veçanërisht në operim paralel ose migrim etapë-pas-etape, rollback shpesh është më shumë „Rollforward“: Ju rregulloni dhe vazhdoni migrimin. Edhe kjo kërkon një plan, në mënyrë që një incident të mos bëhet çështje e përhershme.

Organizimi i projektit: rolet, përgjegjësitë, pikat e vendimmarrjes

Një rindërtim i bazës së të dhënave është i suksesshëm kur përgjegjësitë janë të qarta:

  • Udhëheqja teknike (Arkitektura): Pamja e synuar, korniza udhëzuese, rishikimi i migrimeve.
  • DBA/Administrim: Koncepti i operimit, Backup/Recovery, monitorim, baza e performancës.
  • Përgjegjësi funksionale për të dhënat: Rregulla për cilësinë e të dhënave, pranimi i validimit funksional.
  • Release-Management: Mjediset e testimit, Staging, Cutover-Runbook, komunikimi i ndryshimeve.

Kanë rezultuar efektive portat e vendimmarrjes: pas inventarit, pas migrimit të prototipit, pas testeve të performancës, para cutover-it. Kështu projekti bëhet i kontrollueshëm, edhe nëse gjatë procesit shfaqen njohuri të reja.

Përfundim: Modernizim me disiplinë në vend të rrezikut të veprimeve impulsive

Një ristrukturim i bazës së të dhënave në Delphi-Software të zhvilluar me kalimin e kohës është i realizueshëm, nëse e planifikoni si një projekt arkitekturor dhe operativ: me një vlerësim të qartë të gjendjes ekzistuese, qëllime të qarta, migrime të versionuara, validim të besueshëm dhe një koncept realist për cutover dhe rollback. Përfitimi teknik shpesh është më i madh se „vetëm“ një skemë e re: cilësi më e mirë e të dhënave, ndërfaqe më të qëndrueshme, operim i kontrollueshëm dhe një bazë mbi të cilën hapat e modernizimit (p.sh. shërbime, portale, klientë të rinj) bëhen ndjeshëm më pak të rrezikshëm.

Nëse dëshironi të përgatitni ristrukturimin tuaj në mënyrë të strukturuar – nga BDE-zëvendësim mbi FireDAC-kalim deri te migrimi në PostgreSQL ose SQL Server – diskutoni me ne për procedurën, rreziqet dhe një rrugë migrimi realiste:

Në kontekstin profesional, edhe Delphi modernizim dhe migrimi i të dhënave luajnë një rol të rëndësishëm, kur integrimet, rrjedhat e të dhënave dhe zhvillimi i mëtejshëm duhet të bashkëveprojnë saktë.

Diskutoni projektin ose nismën e modernizimit me Net-Base.

Hapi tjetër

Kur nga një temë lind një projekt real, arkitektura, sistemi ekzistues dhe operimi duhet të vlerësohen së bashku që në fillim.

Ne nuk mbështesim vetëm në çështje të veçanta, por edhe kur nga fragmente të kodit burimor, temat legacy ose idetë për portale duhet të zhvillohen në një projekt korporativ të qëndrueshëm.

  • Gjendja ekzistuese, imazhi i synuar dhe rreziqet teknike vlerësohen së bashku.
  • REST, qasja në të dhëna, portalet dhe implementimi nuk shtyhen si pasojë e mëvonshme.
  • Ju e shihni herët se cila rrugë është e qëndrueshme ekonomikisht dhe operativisht.

Ndaje postimin

Shpërndaj këtë postim drejtpërdrejt

LinkedIn, X, XING, Facebook, WhatsApp dhe E-Mail janë menjëherë të disponueshme. Për Instagram po përgatisim lidhjen dhe tekstin e shkurtër.

Postë elektronike

Instagram hapet në një skedë të re. Linku dhe teksti i shkurtër kopjohen më parë në memorjen e kopjimit.