Net-Base Žurnāls

04.06.2026

Migrācija no Firebird uz MariaDB: rīcības plāns, biežākās kļūdas un operacionālā drošība ikdienā

Migrācija no Firebird uz MariaDB reti ir tikai eksporta/importa jautājums. Izšķiroši ir SQL dialekts, transakcijas, rakstzīmju kopas, datu tipi, trigeri/generatori, veiktspēja un tīra pārslēgšanās. Raksts rāda praktiski izmantojamu pieeju priekš...

04.06.2026

No žurnāla tēmas līdz projektu praksei

Atbilstošas pakalpojumu un tehniskās lapas rakstam

Kurš pārvietot Firebird uz MariaDB vēlas, parasti izvirza skaidru mērķi: ilgtermiņā labi uzturamu datu platformu, kas iederas esošajā infrastruktūrā, rezerves kopēšanas stratēģijās, monitoringa risinājumos un IT komandas zināšanās. Taču praksē tas reti ir vienkārši datu kopēšana. Firebird un MariaDB atšķiras SQL dialektā, transakciju uzvedībā, datu tipos, rakstzīmju kopu un salīdzināšanas noteikumu (collation) jomā, kā arī veidā, kā datubāzē īstenota loģika (triggeri, stored procedures, sekvenču/generatoru izmantošana).

Šis raksts apraksta pieeju, kas strādā uzņēmumos: ar pamatīgu analīzi, kontrolētu migrācijas ceļu, izsekojamu testējamību un cutover, kas nepamatoti neapdraud ekspluatāciju. Uzsvars apzināti likts uz ekspluatāciju, administrēšanu, datu kvalitāti un integrācijām – mazāk uz framework detaļām.

Kāpēc uzņēmumi aizstāj Firebird – un kāpēc bieži izvēlas MariaDB

Firebird ir pievilcīgs daudzām izaugušām biznesa lietojumprogrammām: kompakts, ātri ieviešams, bieži ilgstoši stabils ekspluatācijā. Tajā pašā laikā, atkarībā no organizācijas, parasti pastāv tipiski iemesli aizstāšanai:

  • Darbības standartizācija: MariaDB (saderīga ar MySQL) tiek daudzās vidēs jau izmantota kā standarta datubāze, ieskaitot automatizāciju, atjauninājumu procesus un monitoringu.
  • Platformu un rīku ekosistēma: daudz ETL rīku, BI savienojumu un darbības instrumentu ir īpaši labi sagatavoti darbam ar MySQL/MariaDB.
  • Skalēšanas un augstas pieejamības koncepti: replikācija, proxy konfigurācijas, klasteru opcijas un konteinerizēta darbība organizatoriski bieži ir vieglāk integrējama.
  • Personāls un atbildības: zināšanas un dežūras pienākumi bieži ir vieglāk nodrošināmi, ja datubāze iederas pārējā ainavā.

Svarīgi: migrācija ir izdevīga tikai tad, ja tā darbojas ne tikai „kaut kā“, bet kļūst par darbspējīgu risinājumu. Tas ietver skaidrus darbības parametrus, Backup/RESTore laikus, uzraudzību, izsekojamu datu integritāti un plānojamu rollback.

Firebird vs. MariaDB: tehniskās atšķirības, kam projektos ir reāla nozīme

Pirms paša migrācijas dizaina ir vērts mērķtiecīgi paskatīties uz atšķirībām, kas vēlāk noteiks laiku un riskus:

SQL dialekts un funkcijas

Firebird izmanto savas sintakses variācijas un funkciju nosaukumus. MariaDB ir MySQL saderīga, taču arī tai ir savas īpatnības. Tipiski konflikti ir datuma/laika funkcijas, virkņu funkcijas, pārvēršanas (casting) noteikumi un tas, kā tiek optimizēti vaicājumi. Migrācijā tas nav tikai akadēmiski: katrs pielāgots vaicājums var izraisīt regresijas, ja to neiztestē sistemātiski.

Transakcijas, izolācija un vienlaicība

Firebird izmanto Multiversion Concurrency Control (MVCC): lasītāji parasti nebloķē rakstītājus tādā pašā veidā kā klasiskajos bloķēšanas modeļos. MariaDB arī izmanto MVCC (caur InnoDB), taču konkrēta uzvedība lielā mērā atkarīga no izolācijas līmeņa, indeksācijas un vaicājumu formām. Ikdienā tas nozīmē: pēc migrācijas bloķēšanas uzvedība, deadlock biežums un ilgstošu transakciju uzvedība var mainīties.

Rakstzīmju kopas, salīdzināšanas kārtība (collation) un kārtošana

Bieži sastopams projekta riska faktors ir rakstzīmju kodējuma (piem., UTF-8) un salīdzināšanas/kārtošanas kārtulu (Collation) kombinācija. Firebird projektos bieži ir jauktu stāvokļu maisījums: vecie dati vecajos kodējumos, vēlāk pārgājuši uz citu kodējumu, papildus lietojumprogrammas kods ar savām konvertēšanas loģikām. MariaDB Collation var konfigurēt datubāzei, tabulai vai laukam. Nepareizas konfigurācijas noved pie kļūdainiem salīdzinājumiem, „dubulto“ atslēgu rašanās reģistrneatkarīgā kārtošanā vai pārsteidzošām rezultātu rindām.

Datu tipi un precizitāte

Firebird un MariaDB atšķiras skaitļu tipiem, laika tipiem, loģiskajam tipam (Boolean), BLOBiem, kā arī noklusējuma vērtību apstrādē. Īpaši kritiska ir precizitāte naudas summām (Decimal) un laika zīmēm. Migrācijai jāplāno tipu mapēšana tā, lai nerastos klusās noapaļošanas vai nogriešanas (trunkācijas) situācijas.

Ģeneratori/sekvences, Auto-Increment un trigeri

Firebird bieži izmanto „ģeneratorus“ (sekvences) kombinācijā ar trigeriem primāro atslēgu piešķiršanai. MariaDB parasti strādā ar AUTO_INCREMENT vai SEQUENCE (atkarībā no versijas/uzstādījuma). Ja lietojumprogramma līdz šim skaidri pieprasīja ģeneratora vērtības vai ja trigeru loģika balstās uz ģeneratoriem, to nepieciešams rūpīgi rekonstruēt vai apzināti pārveidot – ieskaitot pareizus sākuma vērtības un konfliktu novēršanu.

Sagatavošanās: inventarizācija, nevis intuīcija

Uzticama migrācija sākas ar inventarizāciju, kas ne tikai saskaita tabulas, bet attēlo to izmantošanu. Mērķis ir izvairīties no pārsteigumiem pārejas nedēļā.

1) Objektu un loģikas inventarizācija

  • Tabulas, skati, indeksi, ierobežojumi (Constraints)
  • Trigeri (īpaši audita, validāciju, primāro atslēgu gadījumā)
  • Stored Procedures un UDF (User Defined Functions)
  • Ģeneratori/sekvences un to lietošanas modeļi
  • Lomas/atļaujas, nepieciešamības gadījumā lietojumprogrammas lietotāji

Svarīgi uzdot jautājumu: kas ir tīra datu glabāšana – un kas ir biznesa loģika, kas atrodas datubāzē? Jo vairāk loģikas izvietots Firebird pusē, jo vairāk migrācijas darba būs nepieciešams to pārnest vai apzināti pārvietot uz servisiem/lietojumprogrammu.

2) Datu profilēšana un datu kvalitāte

Pirms datu kopēšanas jābūt skaidrībai par to, vai dati ir konsekventi. Tipiski mantojuma trūkumi ir nederīgi datuma lauki, „0“ vietā NULL, apgriezti virkņu lauki, neunikālas atslēgas vai vēsturiski tolerētas pārkāpšanas attiecībā uz ierobežojumiem. MariaDB dažos aspektos ir stingrāka, citos tolerantāka – abos gadījumos var rasties problēmsituācijas. Datu profilēšana identificē laukus ar ārējām vērtībām, negaidītiem kodējumiem un būtisku nulles īpatsvaru.

3) Slodzes un piekļuves modeļi

Lai nodrošinātu darbību un veiktspēju, svarīga nav tikai datu apjoma zināšana, bet piekļuve: kuras tabulas ir karstie punkti? Kuri pārskati darbojas naktīs? Kuras transakcijas ir ilgstošas? Kuri vaicājumi darbojas bez indeksa? Firebird dažus modeļus var „piedot“, MariaDB uz tiem var reaģēt ar bloķēšanu vai augstu IO slodzi. Šī analīze vēlāk nosaka indeksa dizainu, vaicājumu pielāgojumus un parametrus.

Arhitektūras lēmums: 1:1 pārvietošana vai kontrolēta modernizācija?

Migrējot pastāv divi ekstrēmi: „1:1 pārnest“ vai „viss jauns“. Reāli kontrolēts vidusceļš parasti ir zemāka riska variants:

  • 1:1 datu struktūrām tur, kur lietojumprogramma ir cieši sasaistīta un izmaiņas būtu dārgas.
  • Mērķtiecīga tīrīšana attiecībā uz vecajiem lēmumiem, kas MariaDB var radīt pastāvīgu darbības risku (piem., pārmērīgi gari VarChar lauki, trūkstoši indeksi, neskaidras salīdzināšanas kārtulas).
  • Saskarnu dekoplēšana, kur skar ārējās sistēmas (BI, DWH, ERP/DMS/CRM). Šeit bieži saprātīgs ir stabils līguma slānis (Views, API, eksporta tabulas).

Par sakārtotām Delphi– vai Windows klienta-servera lietojumprogrammām datu piekļuves slānim ir centrāla nozīme. Ja izmantojat BDE-nomaiņu ar vietējo pieslēgumu (izplatīta Delphi datu piekļuves bibliotēka), tehniskā pieslēgšanās MariaDB pamatā ir labi īstenojama. Izšķirošs nav tik daudz draiveris, cik semantika: transakcijas, parametru tipi, kļūdu kodi, BLOB apstrāde un tās vaicājumu variācijas, kas līdz šim „funktioniert haben“.

Tipiskie šķēršļi posmā „Firebird nach MariaDB migrieren“

NULL, noklusējuma vērtības un tukšas virknes

Vecajās lietojumprogrammās tukšas virknes un NULL bieži nav skaidri atdalītas. Pārskatos, filtrēs vai unikālajos atslēgās tas pēc migrācijas var novest pie citādiem rezultātiem. Šeit palīdz skaidra lēmuma pieņemšana pa kolonnu: vai NULL ir atļauts? noklusējuma vērtība? vai UI/serviss konsekventi ieraksta un lasa šādi?

Boolean un statusa lauki

Firebird bieži izmanto Smallint(0/1) vai char(‚T’/’F‘) rakstību. MariaDB piedāvā BOOLEAN kā aliasu (parasti TINYINT(1)). Svarīgi integrācijām: kā vērtības tiek serializētas (piem., REST-servisos)? Neskaidra konvertēšana citādi noved pie „true/false“ kļūdām, kas atklājas tikai procesā.

BLOBs: Dokumente, Bilder, E-Mails

BLOB lauki reti ir „tikai lieli“. Tie ietekmē backup, restore, replikāciju un veiktspēju. Jālemj, vai MariaDB BLOBs paliks datubāzē vai vidēja termiņa risinājumam labāk izmantot objektu bāzētu krātuvi (failu sistēma, S3-saderīga). Migrācijas laikā pārbaudāmais: vai BLOBs ir bināri vai teksta, kādas kodēšanas tiek izmantotas un kā lietojumprogramma interpretē saturu.

Identitātes un atslēgu ģenerēšana

Ja Firebird izmanto triggerus + generatorus, lai iestatītu primārās atslēgas, galapuses pusei jānostiprina, kas piešķir ID: datubāze (AUTO_INCREMENT/SEQUENCE) vai lietojumprogramma. Jauktas formas ir riskantas. Turklāt pēc importa sākuma vērtības jāiestata pareizi, citādi pirmajā jaunizveidē pēc Cutover var rasties atslēgu sadursmes.

Trigera loģika auditam un validācijai

Daudzos sistēmās ir trigeri, kas uztur izmaiņu laiku, lietotāja identifikatoru vai audita rindas. MariaDB atbalsta trigerus, taču detaļas (sintakse, laiki, piekļuve OLD/NEW, kļūdu apstrāde) var atšķirties. Īpaši audittrigeri ir operacionāli svarīgi: ja pēc migrācijas tie klusībā nenostrādā, rodas atbilstības un izsekojamības problēmas.

Rakstzīmju kopu konflikti un „neredzamās“ datu kļūdas

Klasisks gadījums: dati lietojumprogrammā izskatās pareizi, taču mērķsistēmā tie tiek šķiroti nepareizi vai netiek atrasti LIKE meklēšanā. Cēlonis var būt collation neatbilstība vai jaukta kodējuma izmantošana. Tāpēc testējiet ne tikai attēlojumu, bet arī meklēšanas loģiku, dubultu pārbaudes, importu/eksportu un integrācijas (piem., CSV/EDI).

Migrācijas stratēģija: bezsaistes, tiešsaistes vai hibrīda?

Stratēģijas izvēle nosaka projekta plānu. Tipiski ir trīs varianti:

Bezsaistes migrācija (klasiskā Cutover)

Lietojumprogramma tiek apturēta, dati tiek eksportēti/importēti, pēc tam tiek pārslēgts. Priekšrocības: vienkāršs, skaidrs datu stāvoklis. Trūkumi: dīkstāve var būt gara atkarībā no datu apjoma un validācijas.

Tiešsaistes migrācija (paralēlais darbs)

Firebird paliek produktīvs, MariaDB tiek nepārtraukti piepildīta (piemēram, ar replikācijas vai Change-Data-Capture mehānismiem). Cutover ir īss. Taču sarežģītība būtiski augstāka: konflikti, secības, transakcijas, kļūdu apstrāde.

Hibrīds (sākotnējā fāze + galīgais delta-imports)

Daudzos uzņēmumos praktiski: sākotnējais masveida imports tiek veikts iepriekš, pēc tam tiek pārsūtītas tikai izmaiņas (deltas), līdz notiek galīgais Cutover. Triks ir skaidra delta-definīcija: laika zīmogi, sekvences vai izmaiņu žurnāli ir jābūt uzticamiem.

ETL un datu pārņemšana: kā padarīt importēšanas ceļus izturīgus

Datu pārņemšanā atmaksājas skaidrs process, nevis „viens skripts un cerība“. Šeit „robusts“ nozīmē: atkārtojams, protokollēts, pārbaudāms.

Staging-pieeja, nevis tiešais imports

Pārbaudīta prakse ir staging datubāze (vai shēma), kurā dati vispirms tiek importēti neapstrādāti. Tur jūs varat:

  • normalizēt teksta kodējumus
  • pārbaudīt un konvertēt datu tipus
  • pārbaudīt referenciālo integritāti
  • padarīt dubletu konfliktus redzamus

Tik pēc tam dati tiek pārvietoti uz mērķshēmu. Tas samazina risku, jo kļūdas kļūst redzamas agrīnā posmā un imports paliek atkārtojams.

Validācija: pārbaudes, kas darbībā patiešām palīdz

Iestatiet validācijas tā, lai tās vēlāk kalpotu kā pieņemšanas un ekspluatācijas drošības līdzeklis. Tipiskas pārbaudes kategorijas:

  • Rindu skaits katrā tabulā (ne kā vienīgais pierādījums, bet kā bāzes signāls)
  • Summu-/Hash-pārbaudes pār kritiskajām kolonnām (piem., summas, statusi, laika zīmogi)
  • Atsauces (pamesti ārējo atslēgu ieraksti, pat ja vēsturē bez ierobežojuma)
  • Izlases pārbaudes no fachlich kritiskiem procesiem (pasūtījumi, dokumenti, vēsturiskie ieraksti)

Īpaši lēmējiem svarīgi: validācija nav „nice to have“, bet gan sviras punkts, lai samazinātu lēni progresējošu datu kļūdu risku.

Veiktspēja un ekspluatācija: kas pēc importa nosaka rezultātu

Pēc veiksmīgas datu pārņemšanas sākas fāze, kas ietekmē ikdienu: atbildes laiki, stabilitāte, apkopes logi un pārredzamība ekspluatācijā.

Indeksu dizains un vaicājumu profili

Indeksus nevar pārnest 1:1, jo optimizētāji strādā citādi. Jēgpilna pieeja:

  • Sākt ar labi pārklātu bāzes komplektu (primārās/ārējās atslēgas, bieži izmantotās filtru kolonnas)
  • Veikt slodzes testus ar reālistiskiem darba plūsmām (ne tikai sintētiski SELECT vaicājumi)
  • Mērķtiecīgas indeksu papildināšanas, analizējot lēno vaicājumu žurnālus un monitoringu

Svarīgi: pārāk daudz indeksu pasliktina ieraksta veiktspēju un palielina atmiņas/IO slodzi. Mērķis ir ekspluatācijas kompromiss, nevis „indekss katram vaicājumam“.

Transakciju lielums un partiju apstrāde

Daudzi legacy procesi strādā ar lielām transakcijām (piemēram, nakts norēķinu cikli). MariaDB tas var novest pie Undo/Redo sloga, bloķēšanas vai ilgām atkopšanas reizēm. Šeit palīdz skaidras partiju robežas, idempotenta apstrāde (atkārtojama bez dubultierakstiem) un rūpīgi noteikti commit-punkti.

Backup/RESTore, RPO/RTO un atjaunošanas testi

IT vadībai galvenais ir: cik ātri var atjaunot sistēmu un cik liels būs datu zudums sliktākajā gadījumā? Tie ir RTO (Recovery Time Objective) un RPO (Recovery Point Objective). Plānojiet:

  • Regulāras rezerves kopijas (loģiskas/fiziskas atkarībā no koncepcijas)
  • Uzglabāšanu un šifrēšanu
  • Atjaunošanas testus atsevišķā vidē

Migrācija tiek uzskatīta par darbīgi stabilu tikai tad, ja atjaunošanas procesi nav vien dokumentēti, bet faktiski pārbaudīti.

Uzraudzība, trauksmes un kapacitātes plānošana

MariaDB ir labi uzraudzāma, taču tikai tad, ja izvēlaties pareizos signālus: savienojumu skaits, replikācijas statuss (ja tiek izmantots), buffer pool, diska I/O, lock-waits, lēnie vaicājumi, tablespace izaugsme. Nosakiet trauksmju sliekšņus tā, lai tie neapgrūtinātu dežūru ar «troksni», bet tomēr agri ziņotu par reālām problēmām.

Drošība un piekļuves tiesības: no Firebird domāšanas uz MariaDB darbību

Datubāzu migrāciju laikā drošība bieži tiek apsvērta tikai novēloti. Tajā mainās koncepcijas: lietotāju pārvaldība, lomas, uz hostu balstītas atļaujas, TLS savienojumi, paroļu politikas.

Praktiski punkti pārejai:

  • Servisa kontus atdalīt: lietojumprogramma, atskaites, administrators, apkope – atsevišķi konti, minimālās tiesības.
  • Tīklu segmentēšana: MariaDB neatveriet „visiem“; piekļuve caur definētiem tīkliem un portiem.
  • Datu šifrēšana tranzītā: TLS starp aplikāciju un datubāzi, īpaši izvietotām lokācijām.
  • Žurnālu veidošana: atkarībā no atbilstības prasībām nodrošināt piekļuves un admin-darbību izsekojamību.

Īpaši ja integrācijas (piem., portāli vai REST-servisi) tiek pieslēgtas datubāzei, datubāze nedrīkst kļūt par „kopējo busu“, bet tai jāpieprasa piekļuve caur definētām saskarnēm. Tas samazina laterālās kustības drošības incidenta gadījumā.

Cutover plānošana: tā projekts kļūst par kontrolētu pāreju

Cutover nav brīdis, kad „beidzot pārslēdz“, bet moments, kad redzama laba sagatavošana. Praktiski piemērots Cutover plāns satur:

  • Freeze-Zeitpunkt (no kura brīža Firebird vairs neveic datu izmaiņas)
  • Galīgais delta imports iekļaujot žurnālu veidošanu un laika mērījumus
  • Verifikācija ar skaidriem kritērijiem (nevis „izskatās labi“)
  • Lietojumprogrammu pārslēgšana (Connection Strings, DNS/Proxy, Secrets)
  • Smoke testi svarīgākajiem biznesa procesiem
  • Rollback lēmuma logs (līdz kuram brīdim ir iespējama atgriešanās un kā)

Skaidrs rollback nenozīmē obligāti „kopēt atpakaļ“. Bieži vispraktiskākais rollback ir pārslēgties atpakaļ uz Firebird un MariaDB sākotnēji apturēt, ja Cutover logā nav izraisīti neatgriezeniski sekojoši procesi. To nepieciešams organizatoriski saskaņot (piem., dokumentu numuri, saskarnes eksports).

Integrācija un lietojumprogrammas: kas mainās datubāzes kontekstā

Datubāze reti ir izolēta. Tipiskās atkarības ir:

  • Atskaites (tiešas SQL vaicājumi, skati, izvilkumi)
  • Saskarnes uz ERP/DMS/CRM (faila- vai API-bāzētas)
  • Batch-jobi, Windows-servisi vai Linux-servisi, kas apstrādā datus
  • Portāli un ārējas piekļuves (piem., Klientu portāls)

Īpaši pieaugot sistēmai, ir vērts izmantot iespēju un atdalīt datu piekļuves: centrālie skati/eksporti, skaidri REST-galapunkti vai servisa slāņi. Tas nav pats sev mērķis — tas uzlabo uzturējamību un samazina tiešās SQL atkarības, kas nākamajā migrācijā atkal kļūtu dārgas.

Ja jūsu esošā lietotne ir īstenota Delphi, tas ir arī labs brīdis konsolidēt datu piekļuvi (piem., BDE-Ablosung mit nativer Anbindung pareiza konfigurācija, konsekventi transakciju rāmji, vienots kļūdu apstrādes mehānisms). Tas tieši ietekmē darbības drošību un kļūmju izmeklēšanu.

Testa stratēģija: pieņemšana bez ilūzijām

Datubāzu migrācija reti neizdodas tāpēc, ka “SELECT neiet”, daudz biežāk problēmas rada procesa malējas situācijas, kas darbojas citādi. Robustā testēšanas stratēģija apvieno:

  • Tehniskie testi: savienojuma izveide, transakcijas, bloķēšanas uzvedība, veiktspēja slodzes apstākļos.
  • Funkcionālie end-to-end testi: tipiskas procesa ķēdes no datu ievākšanas līdz analīzei.
  • Regresijas testi atskaitēm: kopsummu, grupēšanas un filtru loģikas salīdzinājumi.
  • Darbības testi: Backup/RESTore, Monitoring/Alarme, RESTartēšanas uzvedība pēc uzturēšanas.

Svarīga ir pieņemšanas kritēriju definīcija: kuri rādītāji ir jābūt vienādiem? Kādas atšķirības ir izskaidrojamas (piem., kārtošanas secība ar vienādu Collation)? Kas lemj šaubos? Bez šādas governance īsi pirms Go-live rodas nevajadzīgas atkārtotas pārbaudes.

Secinājums: migrāciju uztvert kā ekspluatācijas projektu – nevis tikai datubāzu tēmu

Firebird uz MariaDB migrēt ir tehniski izdarāmi, ja tas tiek plānots kā ekspluatācijas un integrācijas projekts. Kritiskie punkti reti ir pats eksports; būtiskākie aspekti ir datu tipi, Collations, triggeru loģika, atslēgu ģenerēšana, transakciju uzvedība un droša Cutover-horeogrāfija. Ja inventarizāciju, validāciju un atjaunošanas testus veic nopietni, tas būtiski samazina projekta riskus un rada datu bāzi, kas ilgtermiņā ir uzturama.

Ja vēlaties migrāciju strukturēti sagatavot — no analīzes un testa koncepcijas līdz Cutover-plānam un ekspluatācijas nodošanai —, varat mūs konkrēti sazināties:

Profesionalajā vidē arī Firebird Migration un Mariadb Migration spēlē svarīgu lomu, kad integrācijām, datplūsmām un turpmākai attīstībai jādarbojas kopā tīri un pārvaldāmi.

Projektu vai modernizācijas priekšlikumu apspriešana ar Net-Base.

Nākamais solis

Ja no tēmas rodas reāls projekts, arhitektūra, esošais stāvoklis un ekspluatācija būtu jāizskata kopā jau agri.

Mēs atbalstām ne tikai atsevišķu jautājumu risināšanā, bet arī tad, kad no avota koda fragmentiem, mantojuma sistēmu jautājumiem vai portāla idejām jāizveido stabils uzņēmuma līmeņa projekts.

  • Esošais stāvoklis, mērķa stāvoklis un tehniskie riski tiek kopīgi vērtēti.
  • REST, datu piekļuve, portāli un izvēršana netiek atlikti kā vēlākas sekas.
  • Jūs savlaicīgi redzat, kurš ceļš ir ekonomiski un darbības ziņā dzīvotspējīgs.

Kopīgot ierakstu

Kopīgot šo ierakstu tieši

LinkedIn, X, XING, Facebook, WhatsApp un e-pasts ir uzreiz pieejami. Instagramam saiti un īsu tekstu sagatavosim nekavējoties.

E-pasts

Instagram atveras jaunā cilnē. Saite un īss teksts tiek iepriekš nokopēti starpliktuvē.