Net-Base Žurnalas

04.06.2026

Migracija iš Firebird į MariaDB: eiga, spąstai ir kasdienio eksploatavimo patikimumas

Perėjimas nuo Firebird prie MariaDB retai apsiriboja vien eksportu–importu. Esminiai veiksniai yra SQL dialektas, transakcijos, simbolių rinkiniai, duomenų tipai, trigeriai/generatoriai, našumas ir tvarkingas perėjimas. Straipsnis pateikia pritaikomą praktinį veiksmų planą...

04.06.2026

Nuo žurnalo temos iki projekto įgyvendinimo

Tinkami puslapiai apie paslaugas ir techninę informaciją šiam įrašui

Kas nori migruoti iš Firebird į MariaDB, dažniausiai turi aiškų tikslą: ilgalaikė, patikimai prižiūrima duomenų platforma, kuri integruojasi į esamą infrastruktūrą, atsarginių kopijų strategijas, stebėseną ir IT komandos žinias. Praktikoje tai retai būna tik paprastas duomenų kopijavimas. Firebird ir MariaDB skiriasi SQL dialektu, transakcijų elgsena, duomenų tipais, simbolių rinkinio ir rūšiavimo taisyklėmis (Collations) bei tuo, kaip logika realizuojama duomenų bazėje (triggeriai, Stored Procedures, sekvencijos/generatoriai).

Šis įrašas aprašo požiūrį, kuris veikia įmonėse: patikima analizė, kontroliuojamas migracijos kelias, užtikrinama testavimo atsekamumas ir perėjimas (Cutover), kuris nereikalauja perteklinio rizikos verslui. Dėmesys sąmoningai skiriamas eksploatacijai, administravimui, duomenų kokybei ir integracijoms – mažiau ramstomasi framework detalėmis.

Kodėl įmonės keičia Firebird – ir kodėl dažnai pasirenkama MariaDB

Firebird daugybei brandžių verslo sprendimų yra patrauklus: kompaktiškas, greitai paruošiamas, dažnai ilgam stabilus eksploatacijoje. Tačiau priklausomai nuo organizacijos dažniausiai išryškėja keli įprasti pokyčio varikliai:

  • Operacijų standartizavimas: MariaDB (MySQL suderinama) daugelyje aplinkų jau veikia kaip standartinė duomenų bazė, įtraukiant automatizaciją, pataisų procesus ir stebėseną.
  • Platformos ir įrankių ekosistema: Daugelis ETL įrankių, BI jungčių ir eksploatacijos priemonių yra geriau paruošti MySQL/MariaDB aplinkai.
  • Mastelio keitimo ir aukšto prieinamumo sprendimai: Replikacija, proxy sprendimai, klasterių galimybės ir konteinerizuotas veikimas organizacine prasme dažnai lengviau integruojami.
  • Žmogiškieji ištekliai ir atsakomybės: Techninis know‑how ir budrumo aprėptis dažnai paprasčiau užtikrinama, kai duomenų bazė atitinka likusią landschaftą.

Svarbu: migracija verta pastangų tik jei ji ne tik „kaip nors“ veikia, bet tampa eksploatuojama. Tai apima aiškius veikimo parametrus, Backup/RESTore laikus, stebėseną, atsekiamą duomenų integralumą ir planuojamą Rollback.

Firebird vs. MariaDB: techniniai skirtumai, kurie projekte iš tikrųjų svarbūs

Prieš pradedant migracijos dizainą verta tiksliai įvertinti skirtumus, kurie vėliau nulems laiką ir riziką:

SQL dialektas ir funkcijos

Firebird naudoja savitus sintaksės variantus ir funkcijų pavadinimus. MariaDB yra MySQL suderinama, tačiau ji taip pat turi savo ypatybių. Tipiškos konflikto vietos yra datos/laiko funkcijos, eilutės funkcijos, konvertavimo (casting) taisyklės ir užklausų optimizavimo ypatumai. Migracijos metu tai nėra akademinis klausimas: kiekviena pritaikyta užklausa gali sukelti regresijas, jei ji nėra sistemingai ištestuota.

Transakcijos, izoliacija ir konkurencija

Firebird dirba su Multiversion Concurrency Control (MVCC): skaitytojai įprastai kitaip neblokuoja rašytojų nei klasikiniai užrakinimo modeliai. MariaDB taip pat naudoja MVCC (per InnoDB), tačiau konkretus elgesys stipriai priklauso nuo izoliacijos lygio, indeksavimo ir užklausos formos. Kasdienėje veikloje tai reiškia: po migracijos gali pasikeisti užrakinimo modelis, deadlockų dažnis ir ilgai trunkančių transakcijų elgsena.

Simbolių rinkinys, collation ir rūšiavimas

Dažnas projekto rizikos faktorius yra simbolių rinkinio (pvz. UTF-8) ir collation (rūšiavimo ir palyginimo taisyklės) derinys. Firebird projektai dažnai yra mišriame state: seni duomenys legacy koduotėse, vėliau pertvarkyti, prie to prisideda programos kodas su savo konvertavimais. MariaDB leidžia konfigūruoti collation kiekvienai duomenų bazei, lentelei ar stulpeliui. Neteisingi nustatymai veda prie klaidingų palyginimų, „dublikatinių“ raktų esant case-insensitive rūšiavimui arba netikėtų rezultatų sąrašų.

Duomenų tipai ir tikslumas

Firebird ir MariaDB skiriasi skaitinių tipų, laiko tipų, Boolean, BLOB ir numatytųjų reikšmių tvarkyme. Ypač kritiškas yra tikslumas pinigų sumų (Decimal) ir laiko žymų atžvilgiu. Migracija turi suplanuoti tipų priskyrimą (type mapping) taip, kad neįvyktų tylūs suapvalinimai ar apkarpymai.

Generatoriai/sekvencijos, Auto-Increment ir trigeriai

Firebird dažnai naudoja „generatorius“ (sekvencijas) kartu su trigeriais pirminių raktų priskyrimui. MariaDB paprastai dirba su AUTO_INCREMENT arba SEQUENCE (priklausomai nuo versijos/konfigūracijos). Jei programa iki šiol tiesiogiai užklausia generatoriaus reikšmių arba trigerių logika remiasi generatoriais, tai turi būti tiksliai atkurta arba sąmoningai pertvarkyta – įskaitant teisingus pradinės reikšmės nustatymus ir konfliktų nebuvimą.

Paruošimas: inventorizacija vietoje spėjimo

Tvari migracija prasideda inventorizacija, kuri ne tik suskaičiuoja lenteles, bet ir atvaizduoja naudojimą. Tikslas – išvengti staigmenų per perėjimo savaitę.

1) Objektų ir logikos inventorius

  • Lentelės, Views, indeksai, apribojimai (Constraints)
  • Trigeriai (ypač audito, validacijų, pirminių raktų atvejais)
  • Stored Procedures ir UDF (User Defined Functions)
  • Generatoriai/sekvencijos ir jų naudojimo modeliai
  • Rolės/leidimai, esant reikalui – programos naudotojai

Svarbu užduoti klausimą: kas yra grynai duomenų saugojimas – o kas yra verslo logika, kuri įdėta į duomenų bazę? Kuo daugiau logikos yra Firebird viduje, tuo daugiau migracijos darbo reikės perduodant ją arba sąmoningai perkelti į servisus/programą.

2) Duomenų profilavimas ir duomenų kokybė

Prieš kopijavimą turi būti aišku, ar duomenys yra konsistentūs. Tipinės senosios naštos yra neteisingos datos reikšmės, „0“ vietoje NULL, apkarpyti tekstai, neunikalūs raktai arba istoriškai toleruoti apribojimų pažeidimai. MariaDB kai kuriais aspektais yra griežtesnė, kitais – tolerantiškesnė; abu atvejai gali sukelti problemų. Duomenų profilavimas identifikuoja laukus su iššokėliais, netikėtomis koduotėmis ir įtartinomis NULL proporcijomis.

3) Apkrovos ir prieigos modeliai

Eksploatacijai ir našumui svarbu ne tik duomenų apimtis, bet ir prieiga: kurios lentelės yra hotspotai? Kokie ataskaitų procesai vyksta naktimis? Kurios transakcijos yra ilgos? Kokios užklausos vykdomos be indekso? Firebird kai kuriuos modelius gali „atleisti“, MariaDB į juos reaguoja galimai užrakinimu arba dideliu IO krūviu. Ši analizė vėliau nulems indekso dizainą, užklausų koregavimą ir parametrus.

Architektūros sprendimas: 1:1 perkėlimas ar kontroliuojama modernizacija?

Migracijos metu yra du ekstremai: „1:1 perimti“ arba „viską iš naujo“. Realioje situacijoje kontroliuojamas vidurio kelias dažniausiai yra mažiausiai rizikingas:

  • 1:1 duomenų struktūroms ten, kur programa yra stipriai susieta ir pakeitimai būtų brangūs.
  • Tikslinės švarinimo priemonės dėl senų sprendimų, kurie MariaDB aplinkoje sukuria nuolatinę eksploatacijos riziką (pvz., pernelyg ilgi VarChar laukai, trūkstami indeksai, neaiškios collation).
  • Sąsajų atskyrimas, kai tai liečia išorines sistemas (BI, DWH, ERP/DMS/CRM). Čia dažnai prasminga turėti stabilų kontraktų sluoksnį (Views, API, eksportavimo lentelės).
  • Išaugusioms Delphi– arba Windows klientų–serverių programoms duomenų prieigos sluoksnis atlieka centrinį vaidmenį. Jei naudojate BDE-Ablosung su natyvia prijungtimi (plačiai paplitusi Delphi duomenų prieigos biblioteka), techninis prijungimas prie MariaDB iš esmės yra įgyvendinamas. Lemtinga ne tiek tvarkyklė, kiek semantika: transakcijos, parametrų tipai, klaidų kodai, BLOB apdorojimas ir užklausų variantai, kurie iki šiol „veikė“.

    Tipinės kliūtys žingsnyje „migracija iš Firebird į MariaDB“

    NULL, numatytosios reikšmės ir tušti eilutės

    Senose programose tuščios eilutės ir NULL dažnai nėra aiškiai atskirti. Ataskaitose, filtruose ar unikaliuose raktuose tai gali po migracijos lemti kitokias išvadas. Čia padeda aiški kiekvieno stulpelio nuostata: ar leidžiamas NULL? Kokia numatytoji reikšmė? Ar UI/Service nuosekliai rašo ir skaito tokiu būdu?

    Boolean ir statuso laukai

    Firebird dažnai naudoja Smallint(0/1) arba char(‚T’/’F‘) modelį. MariaDB turi BOOLEAN kaip aliasą (įprastai TINYINT(1)). Sąsajoms svarbu: kaip reikšmės serializuojamos (pvz. REST-servisuose)? Neaiški konvertacija gali sukelti „true/false“ klaidas, kurios pasireiškia tik proceso metu.

    BLOB’ai: dokumentai, paveikslėliai, el. laiškai

    BLOB laukai retai būna „tiesiog dideli“. Jie veikia atsarginį kopijavimą, atkūrimą, replikaciją ir našumą. Reikia apsispręsti dėl MariaDB, ar BLOB laikyti duomenų bazėje, ar vidutinės trukmės sprendimas būtų objektinė saugykla (failų sistema, S3 suderinama). Pačiai migracijai taikoma: patikrinkite, ar BLOB yra dvejetaine ar tekstine, kokie kodavimai galioja ir kaip taikomoji programa interpretuoja turinį.

    Identitetai ir raktų generavimas

    Jei Firebird nustato pirminius raktus per trigger’ius + generatorių, tikslinei pusei reikia aiškiai apibrėžti, kas priskiria ID: duomenų bazė (AUTO_INCREMENT/SEQUENCE) ar aplikacija. Mišrios formos yra rizikingos. Be to, po importo pradinės reikšmės turi būti teisingai nustatytos, priešingu atveju po perjungimo gali kilti raktų kolizijų pirmojoje naujoje įrašo kūrimo operacijoje.

    Trigger logika auditams ir validacijai

    Daugelis sistemų turi trigger’ius, kurie registruoja pakeitimo laiką, vartotojo identifikatorių ar audit įrašus. MariaDB palaiko trigger’ius, bet detalės (sintaksė, laiko aspektai, prieiga prie OLD/NEW, klaidų tvarkymas) skiriasi. Ypač audit trigger’iai yra operaciškai svarbūs: jei po migracijos jie tyliai nustoja veikti, kyla atitikimo ir atsekamumo problema.

    Rašmenų rinkinio konfliktai ir „nematomos“ duomenų klaidos

    Klasika: duomenys aplikacijoje atrodo teisingi, bet tikslineje sistemoje neteisingai rūšiuojami arba jų nerandama LIKE paieškoje. Priežastis — collation neatitikimai arba mišrūs kodavimai. Todėl testuokite ne tik „rodymą“, bet ir paieškos logiką, dublikatų patikras, importą/eksportą ir integracijas (pvz., CSV/EDI).

    Migracijos strategija: offline, online ar hibridinė?

    Strategijos pasirinkimas lemia projekto planą. Įprastai yra trys variantai:

    Offline migracija (klasikinis Cutover)

    Programa sustabdoma, duomenys eksportuojami/importuojami, po to atliekamas perjungimas. Privalumai: paprasta, aiškus duomenų būsena. Trūkumai: neveikimo laikas gali būti ilgas, priklausomai nuo duomenų kiekio ir validacijos.

    Online migracija (paralelinis veikimas)

    Firebird lieka produktyvus, MariaDB nuolat pildoma (pvz., per replikacijos ar Change-Data-Capture mechanizmus). Cutover trunka trumpai. Tačiau sudėtingumas yra žymiai didesnis: konfliktai, tvarkos, transakcijos, klaidų tvarkymas.

    Hibridas (pradinis sinchronizavimas + galutinis delta-importas)

    Daugeliu įmonių praktiška: iš anksto atliekamas pradinio dydžio (bulk) importas, vėliau perduodami tik pakeitimai (deltos), kol įvyksta galutinis Cutover. Svarbiausias momentas — aiški delta apibrėžtis: laiko žymos, sekos arba pakeitimų protokolai turi būti patikimi.

    ETL ir duomenų perdavimas: kaip padaryti importavimo kelius atsparius

    Perimant duomenis verta turėti aiškų procesą vietoje „vienas skriptas ir viltis“. Atsparumas čia reiškia: kartojamumas, protokolavimas, patikrinamumas.

    Staging požiūris vietoj tiesioginio importo

    Išbandytas modelis — staging duomenų bazė (arba schema), į kurią duomenys pirmiausia importuojami neapdoroti. Ten galite:

    • Normalizuoti koduotes
    • Tikrinti tipus ir konvertuoti
    • Kontroliuoti referencinį vientisumą
    • Padaryti dubletų konfliktus matomais / identifikuoti

    Tik po to duomenys pervedami į tikslo schemą. Tai sumažina riziką, nes klaidos pasimato anksti ir importas lieka kartojamas.

    Validacija: patikrinimai, kurie iš tikrųjų padeda eksploatacijoje

    Nustatykite validacijas taip, kad jos vėliau tarnautų kaip priėmimo ir eksploatacijos saugumas. Tipinės patikros kategorijos:

    • Eilučių skaičiai kiekvienai lentelei (ne kaip vienintelis įrodymas, bet kaip pagrindinis signalas)
    • Summų-/hash patikros per kritinius stulpelius (pvz., sumos, būsena, laiko žymos)
    • Referencijos (palikti užsienio raktai, net jei istoriškai be apribojimų)
    • Imties patikrinimai iš funkcinių kritinių procesų (užsakymai, dokumentai, istorijos įrašai)

    Ypač sprendimų priėmėjams svarbu: validacija nėra „nice to have“, o svirtis, kad būtų minimizuota besikaupiančios duomenų klaidos rizika.

    Veikimas ir eksploatavimas: kas lemia po importo

    Po sėkmingo duomenų perkėlimo prasideda etapas, kuris formuoja kasdienybę: atsako laikai, stabilumas, priežiūros langai ir operacijų skaidrumas.

    Indeksų dizainas ir užklausų profiliai

    Indeksų negalima perkelti 1:1, nes optimizatoriai veikia skirtingai. Pagrįstas požiūris:

    • Pradėkite nuo gerai apimančio bazinio rinkinio (pagrindiniai/užsienio raktai, dažnai filtruojami stulpeliai)
    • Krovos testai su realistiniais darbo srautais (ne tik sintetinės SELECT užklausos)
    • Tikslingi papildomi indeksai pagal lėtų užklausų žurnalus ir monitoringą

    Svarbu: per daug indeksų pablogina rašymo našumą ir padidina atminties/IO sąnaudas. Tikslas — operacinis kompromisas, o ne „indeksas kiekvienai užklausai“.

    Transakcijų dydis ir partijų apdorojimas

    Daugelis paveldėtų procesų dirba su didelėmis transakcijomis (pvz., naktiniai apskaitos ciklai). MariaDB tai gali sukelti undo/redo apkrovą, užrakinimus arba ilgus atkūrimo laikus. Čia padeda aiškios partijų ribos, idempotentinė apdorojimo logika (pakartotinė be dvigubo įrašymo) ir tinkamai nustatyti commit taškai.

    Backup/RESTore, RPO/RTO ir atkūrimo testavimas

    IT vadovybei galiausiai rūpi: kaip greitai galima atkurti ir koks yra duomenų praradimas blogiausiu atveju? Tai yra RTO (Recovery Time Objective) ir RPO (Recovery Point Objective). Planuokite:

    • Reguliarias atsargines kopijas (logiškai/fiziškai, priklausomai nuo koncepcijos)
    • Saugojimą ir šifravimą
    • Atkūrimo testus atskiroje aplinkoje

    Migracija laikoma operatyviai stabili tik tada, kai atkūrimo procesai ne tik dokumentuoti, bet ir realiai išbandyti.

    Stebėjimas, įspėjimai ir pajėgumų planavimas

    MariaDB gerai stebima, tačiau tik jei pasirenkate teisingus signalus: jungčių skaičius, replikacijos būsena (jei naudojama), Buffer Pool, disko I/O, užrakinimo laukimai, lėtos užklausos, tablespace dydžio augimas. Nustatykite įspėjimų ribas taip, kad dežūra nebūtų apkrauta „triukšmu“, bet tikri gedimai būtų pranešti anksti.

    Sauga ir prieigos teisės: nuo Firebird-mąstysenos prie MariaDB eksploatacijos

    Migracijų tarp duomenų bazių metu saugumas dažnai sprendžiamas per vėlai. Tuo pat metu keičiasi koncepcijos: vartotojų valdymas, vaidmenys, pagal hostą grindžiamos prieigos teisės, TLS ryšiai, slaptažodžių politika.

    Praktiniai punktai pereinant:

    • Atskirkite paslaugų paskyras: taikomoji programa, ataskaitos, administracija, priežiūra – atskiros paskyros, minimalios teisės.
    • Tinklų segmentavimas: MariaDB neatidaryti „visiems“; prieigą leisti per apibrėžtus tinklus ir prievadus.
    • Duomenų šifravimas tranzitu: TLS tarp taikomosios programos ir duomenų bazės, ypač paskirstytose vietose.
    • Registravimas: pagal atitikties reikalavimus užtikrinkite, kad prieigos ir administraciniai veiksmai būtų atsekami.

    Ypač kai integracijos (pvz. portalai arba REST-paslaugos) jungiasi prie duomenų bazės, duomenų bazė neturėtų tapti „bendru autobusu“, o turi būti pasiekiama per apibrėžtas sąsajas. Tai mažina lateralius judėjimus saugumo incidente.

    Cutover planavimas: taip projektas tampa kontroliuojamu perėjimu

    Cutover nėra momentas, kai „pagaliau perjungiama“, o metas, kai išryškėja gera parengtis. Praktinis Cutover planas apima:

    • Freeze laikas (nuo kada Firebird nebebus daromi duomenų pakeitimai)
    • Galutinis delta-importas įskaitant žurnalavimą ir laiko matavimą
    • Verifikacija su aiškiais kriterijais (ne „atrodo gerai“)
    • Programų persijungimas (Connection Strings, DNS/Proxy, Secrets)
    • Smoke testai svarbiausiems verslo procesams
    • Rollback sprendimo langas (iki kada ir kaip galima grįžti)

    Tvarkingas rollback nebūtinai reiškia „kopijuoti atgal“. Dažnai praktiškiausias rollback yra perjungti atgal į Firebird ir laikinai sustabdyti MariaDB, jei Cutover lange nebuvo paleisti negrįžtami tolimesni procesai. Tai turi būti suderinta organizaciniškai (pvz., dokumentų numeriai, sąsajų eksportai).

    Integracija ir taikomosios programos: kas keičiasi aplink duomenų bazę

    Duomenų bazė retai būna izoliuota. Tipiškos priklausomybės yra:

    • Ataskaitos (tiesioginės SQL užklausos, Views, eksporto rinkmenos)
    • Sąsajos su ERP/DMS/CRM (failų arba API pagrindu)
    • Batch užduotys, Windows-paslaugos arba Linux-paslaugos, kurios apdoroja duomenis
    • Portalai ir išorinės prieigos (pvz. Klientų portalas)

    Ypač brandžioms sistemoms verta pasinaudoti proga ir atsieti duomenų prieigas: centriniai Views/eksportai, aiškūs REST-galiniai taškai arba paslaugų sluoksniai. Tai nėra savitikslis sprendimas — tai pagerina prižiūrimumą ir sumažina tiesiogines SQL priklausomybes, kurios kitą kartą migracijos metu vėl bus brangios.

    Jei jūsų esama programinė įranga įgyvendinta pagal Delphi, tai taip pat tinkamas laikas konsoliduoti duomenų prieigą (pvz., tvarkingai sukonfigūruoti BDE-Ablosung mit nativer Anbindung, užtikrinti nuoseklius transakcijų rėmus, vienodą klaidų tvarkymą). Tai tiesiogiai prisideda prie eksploatacijos saugumo ir gedimų diagnostikos.

    Testavimo strategija: priėmimas be iliuzijų

    Duomenų bazės migracija retai žlunga dėl to, kad „SELECT neveikia“; dažniau problema kyla, kai kraštinės situacijos procese vyksta kitaip. Patikima testavimo strategija jungia:

    • Techninius testus: ryšio užmezgimas, transakcijos, užrakinimo elgsena, našumas esant apkrovai.
    • Funkcinius end-to-end testus: tipinės proceso grandinės nuo įvedimo iki analizės.
    • Regresijos testus ataskaitoms: sumų, grupių ir filtravimo logikos palyginimas.
    • Operacinius testus: atsarginių kopijų/atkūrimo procedūros, stebėsena/įspėjimai, paleidimo elgsena po priežiūros.

    Svarbu aiškiai apibrėžti priėmimo kriterijus: kurios metrikos turi būti vienodos? Kokie nukrypimai yra paaiškinami (pvz., rūšiavimo tvarka esant vienodai koliacijai)? Kas sprendžia kilus neaiškumams? Be šios valdymo struktūros prieš gyvą paleidimą susidaro nereikalingos iteracijos.

    Išvada: migraciją vertinti kaip eksploatacijos projektą – ne tik kaip duomenų bazės klausimą

    Firebird migracija į MariaDB yra gerai įgyvendinama, jei ji planuojama kaip eksploatacijos ir integracijos projektas. Kritiškos sritys retai būna pats eksportas; dažniausiai tai duomenų tipai, koliacijos, trigerių logika, raktų generavimas, transakcijų elgsena ir saugi perėjimo choreografija. Tie, kurie rimtai atlieka duomenų inventorizaciją, validavimą ir atkūrimo testus, ženkliai sumažina projekto rizikas ir sukuria duomenų bazę, kuri ilgainiui išlieka prižiūrima.

    Jei norite struktūruotai paruošti migraciją – nuo analizės per testavimo koncepciją iki perėjimo plano ir eksploatacijos perdavimo – galite kreiptis į mus konkrečiai:

    Techniniame kontekste taip pat svarbios Firebird Migration ir Mariadb Migration, kai integracijos, duomenų srautai ir tolimesnė plėtra turi veikti darniai.

    Aptarkite projektą arba modernizavimo užmojus su Net-Base.

    Kitas žingsnis

    Kai tema virsta realiu projektu, architektūra, esami sprendimai ir eksploatavimas turėtų būti nagrinėjami kartu nuo pat pradžių.

    Mes padedame ne tik pavienėse užklausose, bet ir tuomet, kai iš šaltinio kodo fragmentų, paveldėtų temų ar portalo idėjų turi tapti patikimas įmonės projektas.

    • Esama padėtis, tikslinis vaizdas ir techninės rizikos vertinami kartu.
    • REST, duomenų prieiga, portalai ir rollout nebus perkelti į vėlesnį etapą kaip vėlyvos pasekmės.
    • Jūs anksti matote, kuris kelias yra ekonomiškai ir operaciniškai tvarus.

    Pasidalinti įrašu

    Tiesiogiai pasidalinti šiuo įrašu

    LinkedIn, X, XING, Facebook, WhatsApp ir el. paštas yra iš karto prieinami. Instagramui paruošiame nuorodą ir trumpą tekstą iš karto.

    El. paštas

    Instagram atidaromas naujame skirtuke. Nuoroda ir trumpas tekstas iš anksto nukopijuojami į iškarpinę.