{"id":30280,"date":"2019-10-31T21:34:38","date_gmt":"2019-10-31T18:34:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\/"},"modified":"2019-10-31T21:34:38","modified_gmt":"2019-10-31T18:34:38","slug":"potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","title":{"rendered":"Conversione in streaming dei database Firebird 2.5 nel formato ODS12 (Firebird 3.0)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ogni versione di Firebird ha una propria versione del formato delle strutture delle disco delle basi di dati \u2013 O(n)D(isk)S(tructure). Fino alla versione 2.5 inclusa, il motore Firebird poteva lavorare con ODS delle versioni precedenti, il che significa che i database delle vecchie versioni venivano aperti dalla nuova versione e funzionavano in modalit\u00e0 compatibile, ma il motore Firebird 3.0 lavora solo con i DB nella propria versione ODS 12.0.<\/p>\n<p>Per passare alla 3.0, il database dalla 2.5 deve essere convertito nel nuovo formato tramite backup\/restoration. Naturalmente, presupponiamo che il DB sia stato preparato in anticipo per la conversione, cio\u00e8 che i metadati e le query siano stati controllati per la compatibilit\u00e0 con Firebird 3.0.<\/p>\n<p>Seguendo l'approccio standard, questo significa che \u00e8 necessario eseguire un backup sulla versione 2.5, poi installare la 3.0 e fare il ripristino. Questa procedura \u00e8 accettabile se si ha abbastanza tempo, ma nella migrazione di grandi database, o nella migrazione contemporanea di decine di DB, quando il tempo \u00e8 un fattore critico, si pu\u00f2 utilizzare la conversione in streaming, che \u00e8 dal 30 al 40% pi\u00f9 veloce. Come fare ci\u00f2 (su Windows e Linux), leggi di seguito.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nL'idea generale \u00e8 che per accelerare utilizzeremo una pipeline:<\/p>\n<pre><code class=\"plaintext\">gbak -b \u2026 database25 stdout | gbak -c \u2026 stdin database30<\/code><\/pre>\n<p>\nGbak dalla 2.5 genera un backup in formato lineare e lo invia a stdout, che subito dopo viene catturato tramite stdin da gbak della 3.0, creando un nuovo DB.<\/p>\n<p>\u00c8 necessario organizzare tale pipeline utilizzando obbligatoriamente il metodo di accesso locale (file), poich\u00e9 l'accesso rete (anche tramite localhost) rallenterebbe notevolmente il processo.<\/p>\n<p>Di seguito consideriamo i dettagli per Windows e Linux.<\/p>\n<p><b>Windows<\/b><\/p>\n<p>Nel caso di Windows, \u00e8 pi\u00f9 semplice creare un'installazione completamente autonoma di Firebird. Per fare questo, prendiamo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/FirebirdSQL\/firebird\/releases\/download\/R2_5_8\/Firebird-2.5.8.27089-0_x64_embed.zip\">l'archivio embed di Firebird 2.5<\/a><\/noindex>, rinominando fbemded.dll in fbclient.dll, aggiungendo dall'archivio \"normale\" 2.5 gli strumenti gbak.exe e (facoltativo) \u2013 isql.exe. <\/p>\n<p>Firebird 3.0 utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/firebirdsql.org\/en\/firebird-3-0\/\">un'unica build<\/a><\/noindex> e non richiede alcuna modifica.<\/p>\n<p>La versione minima (che non richiede l'installazione delle librerie runtime VS2008\/VS2010 sul sistema di destinazione) contiene i seguenti file:<\/p>\n<pre><code class=\"plaintext\">25\/gbak.exe\n25\/fbclient.dll\n25\/firebird.conf\n25\/firebird.log\n25\/firebird.msg\n25\/ib_util.dll\n25\/icudt30.dll\n25\/icuin30.dll\n25\/icuuc30.dll\n25\/Microsoft.VC80.CRT.manifest\n25\/msvcp80.dll\n25\/msvcr80.dll\n\n30\/fbclient.dll\n30\/firebird.conf\n30\/firebird.msg\n30\/gbak.exe\n30\/ib_util.dll\n30\/icudt52.dll\n30\/icudt52l.dat\n30\/icuin52.dll\n30\/icuuc52.dll\n30\/msvcp100.dll\n30\/msvcr100.dll\n30\/intl\/fbintl.conf\n30\/intl\/fbintl.dll\n30\/plugins\/engine12.dll<\/code><\/pre>\n<p>\nUn amministratore esperto pu\u00f2 notare che in 2.5 non sono inclusi i file intl\/fbintl.dll e intl\/fbintl.conf. \u00c8 proprio cos\u00ec, poich\u00e9 gbak non utilizza il charset di connessione e non converte i dati tra i charset, ma sul lato \"ricevente\" di Firebird 3.0 questi file sono necessari durante la creazione degli indici.<\/p>\n<p>In firebird.conf si consiglia di aggiungere in Firebird 3.0:<\/p>\n<pre><code class=\"plaintext\">MaxUnflushedWrites = -1\nMaxUnflushedWriteTime = -1<\/code><\/pre>\n<p>\nInoltre, \u00e8 desiderabile impostare un valore diverso per IpcName per le versioni 2.5 e 3.0. <\/p>\n<p>Quando si scelgono i valori di altri parametri in firebird.conf, ci basiamo su una semplice considerazione: durante il passaggio dei dati, in un processo gbak funziona in 2.5, mentre in un altro \u2013 in 3.0, poi 2.5 termina e 3.0 inizia a costruire gli indici.<\/p>\n<p>Per accelerare la fase di costruzione degli indici in 3.0, \u00e8 consigliabile aumentare la dimensione del parametro TempCacheLimit a circa il 40% della RAM (se si tratta di un server dedicato, ovviamente).<\/p>\n<p>Ad esempio, se sul server ci sono 16 GB di RAM, si pu\u00f2 impostare <\/p>\n<pre><code class=\"plaintext\">TempCacheLimit=6G<\/code><\/pre>\n<p>\n<i>Naturalmente, tale valore pu\u00f2 essere impostato solo su Firebird 3 a 64 bit, poich\u00e9 qualsiasi processo a 32 bit non pu\u00f2 allocare pi\u00f9 di 2 gigabyte di memoria.<\/i><\/p>\n<p>Per 2.5 non \u00e8 necessario modificare questo parametro: \u00e8 gi\u00e0 limitato a 2 gigabyte e non influisce sulla velocit\u00e0 durante il backup.<\/p>\n<p>Prima di eseguire l'operazione, \u00e8 necessario controllare che la cache delle pagine nell'intestazione del database sia impostata su 0 (comando <code>gstat -h databasename<\/code>, controllare la riga Page buffers). <\/p>\n<p>Se la cache \u00e8 impostata esplicitamente nell'intestazione del database, essa sovrascrive i valori di firebird.conf (e databases.conf in 3.0) e, in caso di valori eccessivamente alti, pu\u00f2 portare a un uso eccessivo della memoria e a uno scambio.<\/p>\n<p>Successivamente, copiamo i file nel sistema di destinazione. <\/p>\n<p>La conversione avviene dopo aver fermato il servizio \"sistematico\" di Firebird 2.5, nella riga di comando con diritti elevati fino ad amministratore locale (esempio):<\/p>\n<pre><code class=\"plaintext\">set ISC_USER=proprietario\n\"25\/gbak\" -z -b -g -v -st t -y 25.log database25 stdout|^\n\"30\/gbak\" -z -c -v -st t -y 30.log stdin database30<\/code><\/pre>\n<p>\nIn questo esempio viene utilizzata la \"barra obliqua diretta\" tra virgolette (consentita \"in stile unix\"), mentre il \"cappello\" (simbolo \"^\") fa da escape per il carattere di invio, il che \u00e8 utile per digitare comandi lunghi. L'opzione -st(atus) \u00e8 apparsa in Firebird 2.5.8 e consente di registrare nel protocollo i dati sul tempo di esecuzione del processo gbak (maggiori dettagli nella documentazione).<\/p>\n<p><b>Linux<\/b><\/p>\n<p>Su Linux Firebird 3 dipende dalla libreria tommath. Su CentOS (RHEL) questa libreria si trova nel repository epel, su Ubuntu (Debian) nel sistema.<\/p>\n<p>Per CentOS \u00e8 necessario prima collegare il repository EPEL e solo dopo fare <\/p>\n<pre><code class=\"plaintext\">yum install libtommath<\/code><\/pre>\n<p>\nIn Ubuntu non \u00e8 necessario collegare repository aggiuntivi, ma in Ubuntu 16 e in Ubuntu 18 si installano versioni diverse dei pacchetti \u2013 libtommath0 e libtommath1, rispettivamente.<\/p>\n<p>Firebird 3.0 cerca tommath.so.0 e per Ubuntu 18 \u00e8 necessario creare un collegamento (symlink) da tommath.so.0 a tommath.so.1. Per questo, prima bisogna trovare tommath.so.1. <\/p>\n<p>Il percorso cercato in Ubuntu \u00e8 <code>\/usr\/lib\/x86_64-linux-gnu\/<\/code>, ma in altre distribuzioni basate su Debian potrebbe essere diverso.<\/p>\n<p>Il secondo problema \u00e8 che fino a Firebird 3.0.1, inclusa, non c'era un modo semplice per installare due diverse versioni del server. Non consideriamo l'opzione \"compilare dai sorgenti con il prefisso desiderato\" a causa della sua relativa complessit\u00e0.<\/p>\n<p>Per Firebird 3.0.2 e versioni superiori \u00e8 implementata <noindex><a rel=\"nofollow\" href=\"http:\/\/tracker.firebirdsql.org\/browse\/CORE-5204\">la compilazione con \u2013enable-binreloc<\/a><\/noindex> e un'opzione separata per l'installatore (-path percorso).<\/p>\n<p>Supponendo che la libreria tommath e, se necessario, il symlink per tommath.so.0 siano stati aggiunti al sistema, \u00e8 possibile installare l'attuale (al momento della scrittura di questo articolo) pacchetto Firebird 3.0.4 in, ad esempio, \/opt\/fb3:<\/p>\n<pre><code class=\"plaintext\">.\/install.sh -path \/opt\/fb3<\/code><\/pre>\n<p>\nDopo ci\u00f2, \u00e8 possibile fermare il servizio di sistema Firebird e avviare la conversione in streaming. <\/p>\n<p><i>Quando si ferma Firebird, bisogna tenere conto che i processi di Firebird 2.5 in modalit\u00e0 Classic vengono solitamente avviati da xinetd \u2013 quindi \u00e8 necessario o disabilitare il servizio firebird per xinetd o fermare completamente xinetd.<\/i><\/p>\n<p>Nel file firebird.conf per 3.0 su Linux non \u00e8 necessario impostare i parametri MaxUnflushed (funzionano solo su Windows) e modificare le impostazioni di Firebird 2.5. <\/p>\n<p>In Linux l'accesso locale (file-based) di Firebird 2.5 non \u00e8 equivalente alla variante embedded su Windows \u2013 il server 2.5 funzioner\u00e0 nel processo gbak (senza parte di rete), ma i diritti di accesso saranno controllati sulla base degli utenti, il che significa che sar\u00e0 necessario non solo il login, ma anche la password: <\/p>\n<pre><code class=\"plaintext\">export ISC_USER=username ISC_PASSWORD=password\n\/opt\/firebird\/bin\/gbak -b \u2026 database25 stdout\n|\/opt\/fb3\/bin\/gbak -c \u2026 stdin database30<\/code><\/pre>\n<p>\nDopo la conversione riuscita, bisogna prima rimuovere il \"Firebird 3.0\" \"aggiuntivo\", poi il \"Firebird 2.5\" \"principale\" e solo dopo eseguire una nuova installazione di Firebird 2.5 \u2013 anzi, \u00e8 meglio farlo dall'installatore tar.gz standard, e non tramite repository, poich\u00e9 la versione nei repository potrebbe essere obsoleta.<\/p>\n<p>Inoltre, dopo il ripristino del database su Linux e la reinstallazione bisogna controllare che il nuovo database abbia come proprietario l'utente firebird.<\/p>\n<p>Se non \u00e8 cos\u00ec, sar\u00e0 necessario correggere<\/p>\n<pre><code class=\"plaintext\">chown firebird.firebird database<\/code><\/pre>\n<p>\n<b>Risultato<\/b><\/p>\n<p>Oltre al risparmio di tempo e spazio su disco, la conversione in streaming ha un altro importante vantaggio: la trasformazione del database avviene senza rimuovere l'esistente Firebird 2.5, il che semplifica notevolmente il ripristino in caso di conversione non riuscita (di solito a causa di spazio insufficiente o di un riavvio imprevisto durante il processo di migrazione).<\/p>\n<p>Il risparmio di tempo \u00e8 legato al fatto che la conversione \"classica\" \u00e8 pari a \"tempo di backup\" pi\u00f9 \"tempo di ripristino\". Il ripristino \u00e8 composto da due parti: lettura dei dati dal file di backup e creazione dell'indice.<\/p>\n<p>Con la conversione in streaming, il tempo totale risulta come \"tempo di backup pi\u00f9 cinque-dieci percento\" e \"tempo di creazione degli indici\".<\/p>\n<p>I risultati specifici dipendono dalla struttura del database, ma mediamente il tempo di ripristino \u00e8 circa il doppio del tempo di backup. Pertanto, se consideriamo come unit\u00e0 di misura il tempo di backup, la \"conversione classica\" richiede tre unit\u00e0 di tempo, mentre quella in streaming ne richiede due. Inoltre, l'aumento di TempCacheLimit aiuta a ridurre ulteriormente il tempo.<\/p>\n<p>In generale, la conversione in streaming consente di risparmiare nella pratica dal 30 al 40% del tempo necessario per il backup e il ripristino sequenziale.<\/p>\n<p><b>Domande?<\/b><\/p>\n<p>Per favore, scrivi tutte le domande nei commenti oppure inviale all'autore della metodologia e coautore di questo articolo \u2014 Vasiliy Sidorov, ingegnere sistemista senior della compagnia \"iBase\", all'indirizzo bs at ibase ru.<\/p>\n<p class=\"for_users_only_msg\">Solo gli utenti registrati possono partecipare al sondaggio. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Accedi<\/a><\/noindex>, per favore.<\/p>\n<h2 class=\"default-block__polling-title\">Quale versione di Firebird stai utilizzando?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 3.x<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.5<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.1<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.0, 1.5 o 1.0<\/p>\n<\/li>\n<\/ul>\n<p>    Hanno votato 16 utenti. Un utente si \u00e8 astenuto.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445204\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure). \u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 2.5 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0432\u0438\u0436\u043e\u043a Firebird \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 ODS \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u044b \u043e\u0442 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u043e \u0434\u0432\u0438\u0436\u043e\u043a Firebird 3.0 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0411\u0414 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 ODS \u0432\u0435\u0440\u0441\u0438\u0438 12.0. \u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-30280","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0431\u0430\u0437 Firebird 2.5 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 ODS12 (Firebird 3.0) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:34:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:34:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Conversione in streaming di database Firebird 2.5 in formato ODS12 (Firebird 3.0) | ProHoster","description":"Ogni versione di Firebird ha la propria versione del formato delle strutture disco del database \u2013 O(n)D(isk)S(tructure).","canonical_url":"https:\/\/prohoster.info\/it\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0431\u0430\u0437 Firebird 2.5 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 ODS12 (Firebird 3.0) | ProHoster","og:description":"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).","og:url":"https:\/\/prohoster.info\/it\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:34:38+00:00","article:modified_time":"2019-10-31T18:34:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30280","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 00:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:37:28","updated":"2026-01-21 00:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/30280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=30280"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/30280\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=30280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=30280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=30280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}