sql >> Databáze >  >> RDS >> PostgreSQL

Postupně migrujte z SQL Serveru na PostgreSQL

Vše, co navrhujete, je recept na bolest a neúspěšné migrace. Pokud se pokusíte použít tento přístup, lidé budou žvanit a běsnit o tom, jak hrozný, pomalý a nespolehlivý PostgreSQL je. Byl by to skvělý politický krok od někoho, kdo by si chtěl ponechat SQL Server, ale není to dobrý způsob migrace na PostgreSQL.

Pro novější verze Pg přichází obálka cizích dat pro čtení/zápis, ale zpočátku bude podporovat pouze jiné servery PostgreSQL. Podpora MS SQL by byla mnohem těžší kvůli nutnosti překládat stavy sql a chybové zprávy, podmínky vyhledávání a další, takže jakýkoli obal by byl nepochybně dost omezený a měl by méně než skvělý výkon. Jak říkáte, podpora FDW je v tuto chvíli stejně nevyzrálá.

Je prostě tolik věcí, které ztratíte, když se pokusíte udělat takový hybrid:

  • Žádné vynucování integrity cizího klíče

  • Datové typy na každé straně se nemusí chovat 100% stejně, takže data mohou být na jedné straně v pořádku a na druhé ne. Myslete na časová razítka/data.

  • Efektivní spojení by vyžadovalo extrémně sofistikovaný obal cizích dat – takže se obvykle stane, že bude načtena celá tabulka a poté lokálně spojena. Výkon bude hrozný.

  • Psaní dotazů se stává noční můrou, když děláte cokoli, jen ne ten nejtriviálnější úkol. Názvy funkcí se liší atd.

  • Ztratíte nebo oslabíte mnoho vlastností ACID a/nebo musíte použít dvoufázový odevzdání, což je na úkor výkonu.

Vážně, nedělejte to.

Synchronizace DB je pravděpodobně ještě horší – pokud to nebude jedním způsobem, bude to recept na ztracené aktualizace, smazané řádky, které se znovu objeví a ještě horší. Obousměrná synchronizace je extrémně těžké.

Začněte připravovat své aplikace na přesun tím, že je umožníte spustit na obou serverech, ale pouze po jednom. Jakmile budete mít aplikaci připravenou ke spuštění na Pg, začněte provádět zátěžové testování a testování spolehlivosti s migrovanou kopií živých dat. pak přemýšlejte o migraci, ale mějte plány, jak přesun zvrátit, pokud na poslední chvíli objevíte problémy, které vás nutí odkládat.

Pokud do aplikace přidáváte zcela nové části, může být rozumné je mít v Pg, pokud vůbec neinteragují s ostatními daty v DB. To je ale dost nepravděpodobné a vaši systémoví správci vás budou stále nenávidět, když jim řeknete, že nyní potřebujete atomový snímek ve dvou samostatných databázích...



  1. Mohu spustit HTTP GET přímo v SQL pod MySQL?

  2. Agregační funkce přes pole

  3. Přihlášení uživatele 'DOMAIN\MACHINENAME$' se nezdařilo

  4. Upozornění:#1265 Data zkrácena pro sloupec 'pdd' na řádku 1