Hur hålla lokala database synkroniserade?

Permalänk
Medlem

Hur hålla lokala database synkroniserade?

Tja!

Jag jobbar som utvecklare i ett företag där vi utvecklare en hel del webb-applikationer. På våra live servrar använder vi MySQL men har svårt att hålla alla våra lokala databaser synkroniserade mellan varandra. Vi är ett relativt nystartat företag och är rätt färska när det kommer till just den biten i arbetsflödet. Vi funderar på att sätta upp en lokal server som vi allesammans kan utnyttja men det skapar problem när man ska åka ut till kund för att visa en viss produkt osv.

Finns det några smidiga metoder/program som kan hjälp oss med detta?

Tacksam för hjälp.

Permalänk
Medlem
Permalänk
Medlem

menar du hålla utvecklingsmiljödatabaserna syncade med live databasen?

Det brukar vara big NONONO att blande ihop live data och utvecklings data.

Både för att deploya live och köra en utvecklingsmiljö är docker ett fint verktyg.

Här är en bra video från spotify hur dom satt upp det: https://www.youtube.com/watch?v=pts6F00GFuU

Permalänk
Medlem

Tack så mycket för era svar.

Skrivet av =JoNaZ=:

menar du hålla utvecklingsmiljödatabaserna syncade med live databasen?

Det brukar vara big NONONO att blande ihop live data och utvecklings data.

Både för att deploya live och köra en utvecklingsmiljö är docker ett fint verktyg.

Här är en bra video från spotify hur dom satt upp det: https://www.youtube.com/watch?v=pts6F00GFuU

Ja precis, databaserna som vi använder under utvecklingen. Oftast är det så att det tillkommer tabeller (eller försvinner) utan att alla vet om detta. Vi har svårt att samordna det hela. Vi har tänkt sätta upp en extern server endast för utveckling men det har sina för och nackdelar. Fördelen är att vi alla jobbar centralt, tillkommer det tabeller, ja då har vi alla tillgång till dem. En nackdel är att när vi ska ut till kund och behöver en databas lokalt så har vi inte tillgång till den centrala utan att först göra en db-dump. I dagsläget jobbar vi på så sätt att alla har en strukturell kopia av live databasen fylld med skräpdata.

Jag ska ta och kolla upp docker. tack

Permalänk
Medlem
Skrivet av Xclusiv8:

Tja!

Jag jobbar som utvecklare i ett företag där vi utvecklare en hel del webb-applikationer. På våra live servrar använder vi MySQL men har svårt att hålla alla våra lokala databaser synkroniserade mellan varandra. Vi är ett relativt nystartat företag och är rätt färska när det kommer till just den biten i arbetsflödet. Vi funderar på att sätta upp en lokal server som vi allesammans kan utnyttja men det skapar problem när man ska åka ut till kund för att visa en viss produkt osv.

Finns det några smidiga metoder/program som kan hjälp oss med detta?

Tacksam för hjälp.

Är det datasynkronizering eller är det design? Dvs, har ni flera produktionsdatabaser där informationen skall finnas i bägge databaserna?
Att tebeller tillkommer och försvinner är ju inte en normal miljö...

Citera mig om du vill ställa lite frågor. Jag jobbar för visso nästan uteslutande med microsofts db och med sqlite men har några års erfarenhet

Skrivet av Xclusiv8:

Tack så mycket för era svar.

Ja precis, databaserna som vi använder under utvecklingen. Oftast är det så att det tillkommer tabeller (eller försvinner) utan att alla vet om detta. Vi har svårt att samordna det hela. Vi har tänkt sätta upp en extern server endast för utveckling men det har sina för och nackdelar. Fördelen är att vi alla jobbar centralt, tillkommer det tabeller, ja då har vi alla tillgång till dem. En nackdel är att när vi ska ut till kund och behöver en databas lokalt så har vi inte tillgång till den centrala utan att först göra en db-dump. I dagsläget jobbar vi på så sätt att alla har en strukturell kopia av live databasen fylld med skräpdata.

Jag ska ta och kolla upp docker. tack

Om jag tolkar detta rätt, så håller ni på att utveckla mot en miljö och ni förändrar den mycket och tar bort varandras tabeller etc.

Jag föreslår att ni 1, versionshanterar databasen. För flera projekt har jag exempelvis hela designen av databasen i visual studio och kan därifrån trycka ut en helt ny db eller jämföra den mot befintlig och välja att trycka ut ett förändringsskript.
2 skapar ett uppgraderingsskript som ni versionshanterar. Om du lägger till en tabell och några sp's så skriver du in först en koll som undersöker om tabellen / sp'n / kolumen i tabellen etc finns, om den inte gör det, så lägger du till den.
2.b ni gör ibland avbrott här vid större versionförändringar så ni har en bas, och lägger då åtsidan föregående uppgraderingsskript och påbörjar ett nytt.

I övrigt måste ni komma fram själva till ett bra arbetssätt som fungerar flexibelt för er.

Visa signatur

Intel Core i7 8700K, MSI GeForce GTX 1080 Ti 11GB Gaming X, Samsung 960 EVO 1TB, MSI Z370 GAMING M5, Corsair 32GB (4x8GB) DDR4 3200MHz CL16 Vengeance, EVGA Supernova G3 850W

INTEL CORE I7 3930K 3.20GHZ 12MB S-2011, FRACTAL DESIGN MIDITOWER DEFINE R3, CORSAIR HX 1050W, ASUS RAMPAGE IV FORMULA, Asus STRIX GTX970, CORSAIR 16GB DDR3 DOMINATOR QUAD 1866MHZ CL9 (4X4GB) Ljud: ASUS Xonar D2X/XDT 7.1 | Elac 5.1 +förstärkare | Cambridge dacmagic plus | Astro gaming A40 | Sennheiser HD 650
You ask me if I have a god complex? Let me tell you something, I am god!

Permalänk
Medlem

Versionshantera alla databasobjekt på samma vis som resten av eran kod.

Ett tips är att använda Liquibase http://www.liquibase.org/

Genom att alltid ha all kod, inklusive databasen i samma källkodshanteringssytem så kan man alltid återskapa en viss version oavsett om alla era personliga datorer blir stulna eller liknande.

Jag har jobbat med Liquibase och ett par andra liknande produkter och det gör verkligen en enorm skillnad att ha all sin kod källkodshanterad.
Inget strul med syncning eller annat.
Alla utvecklare kan jobba parallellt med sina egna features och sedan merga in dem i samma repo och på så sätt kommer ni alltid vara up to date.
Något hände med en av era databaser? Inga problem! Kör Liquibase och på någon minut så har du återställt din databas till en känd version.

Skrivet av Xclusiv8:

Tack så mycket för era svar.

Ja precis, databaserna som vi använder under utvecklingen. Oftast är det så att det tillkommer tabeller (eller försvinner) utan att alla vet om detta. Vi har svårt att samordna det hela. Vi har tänkt sätta upp en extern server endast för utveckling men det har sina för och nackdelar. Fördelen är att vi alla jobbar centralt, tillkommer det tabeller, ja då har vi alla tillgång till dem. En nackdel är att när vi ska ut till kund och behöver en databas lokalt så har vi inte tillgång till den centrala utan att först göra en db-dump. I dagsläget jobbar vi på så sätt att alla har en strukturell kopia av live databasen fylld med skräpdata.

Jag ska ta och kolla upp docker. tack

Permalänk
Medlem

När det sedan är dags att sätta upp en produktionsmiljö så kör ni bara Liquibase och vips så har ni samma version i produktion som ni testat under utvecklingen.

Skrivet av MrMygel:

Versionshantera alla databasobjekt på samma vis som resten av eran kod.

Ett tips är att använda Liquibase http://www.liquibase.org/

Genom att alltid ha all kod, inklusive databasen i samma källkodshanteringssytem så kan man alltid återskapa en viss version oavsett om alla era personliga datorer blir stulna eller liknande.

Jag har jobbat med Liquibase och ett par andra liknande produkter och det gör verkligen en enorm skillnad att ha all sin kod källkodshanterad.
Inget strul med syncning eller annat.
Alla utvecklare kan jobba parallellt med sina egna features och sedan merga in dem i samma repo och på så sätt kommer ni alltid vara up to date.
Något hände med en av era databaser? Inga problem! Kör Liquibase och på någon minut så har du återställt din databas till en känd version.

Permalänk
Medlem

I Laravel och Ruby on Rails har man löst det där problemet med migrations (säkert i fler ramverk också).

Man skapar en migration fil med SQL koden som lägger till/ändrar/tar bort en tabell. Sedan kör man filen med ett kommando ("artistan migrate" om man använder laravel). När man kör det kommandot uppdateras databasen. Namnet på migration filerna är datumet som de skapades.

När du sen kör en git pull så kommer du få med alla nya migrate filer. Sen kör du bara "artistan migrate" och så kommer laravel köra SQL koden i filerna i den ordning som filerna skapades.

http://laravel.com/docs/4.2/migrations
http://laravel.com/docs/4.2/schema

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Avstängd

https://github.com/chucknorris/roundhouse

Jag brukar använda RoundhousE, ett verktyg för att versionshantera Schema sps, funcs etc. Sedan scriptar man så att man använder användarnamnet för att skapa en ny databas för varje utvecklare i teamet (Om den redan finns så uppdateras den till senaste version).

Såhär ser vårt script ut

@pushd %~dp0" deploy-db.cmd "server" ..\..\DataBaseProject\ C:\RHLog applicationame_%username% @popd

Visa signatur