Migrera din WordPress-databas en databasprimerare

När det gäller att arbeta med WordPress-baserade projekt, är det förmodligen en av de mest frustrerande eller tråkiga aspekterna av implementering att faktiskt få databaser över dina miljöer att synkronisera med varandra.

Visst, det finns något att säga om att använda testdata i utveckling, användardata i staging och faktiska data i produktionen, men det finns ingen sådan sak som en silverkula, eller hur? Det betyder att ibland testdata kommer att fungera andra gånger, det kommer det inte.

Låt oss till exempel säga att du ärver ett projekt för vilket du måste dra ner en databas och börja börja arbeta med befintliga data. Eller låt oss säga att du måste migrera en hel webbplats eller applikation från en server till en annan.

I sådana fall hjälper testdata inte en hel del. I stället behöver du ett verktyg för det. Visst är WordPress Importer ett rättvist verktyg för grundläggande migreringar, och kör SQL-export och import är okej om du är bekväm med databasens framändar och arbetar med SQL själv.

Men hur är det med dem som är någonstans däremellan?


Gör migreringar enklare

Sanningen är när det gäller att arbeta med WordPress-databasmigrationer, det är en blandad väska eftersom många av oss har kompetensnivåer som varierar beroende på vilken del av stacken vi arbetar med mest.

Med det menar jag:

  • De som är mycket bekvämare med front-end-arbetet kommer sannolikt att vara mindre bekant med applikationslagret och / eller databaslagret
  • De som brukar arbeta med applikationsskiktet kan vara lika bra med frontänden men inte databasen (eller vice versa)
  • De som bor i databasen kanske inte är bekanta med lagren ovan

Det här är inte att säga att det inte finns full stack-utvecklare. Självklart finns det; dock är inte alla i den positionen.

Så när det gäller att arbeta med migrerade WordPress-databaser, har vissa en mycket svårare tid än andra. Alternativt, trots sin komfortnivå med SQL, kan vissa leta efter ett verktyg för att enkelt göra hela processen enklare.

I denna serie ska vi titta på ett verktyg som gör det bara det, men innan vi gör det, låt oss ha en snabb primer på WordPress-databasen för att se till att vi är alla på samma sida.


WordPress-databasen

När det gäller att diskutera WordPress-databasen kan en hel serie artiklar skrivas om varje tabell, varje kolumn, schemat, hur man skriver optimala frågor och så vidare.

Detta är inte serien för det.

I stället ska vi göra två saker i den här artikeln:

  1. Vi ska se till att vi alla har en tydlig, konceptuell förståelse för vad en databas är så vi vet hur vi ska bilda det i våra sinnen
  2. Vi ska titta på var och en tabell i WordPress-databasen för att förstå vilken typ av data varje tabell rymmer

I slutändan bör detta hjälpa till att förklara eller demystifiera några av det underliggande arbetet för dem som spenderar mer tid i fronten och det kan hjälpa dem som spenderar mer tid på applikationslaget som arbetar med WordPress API, förstå vilka funktioner som matchar vilket bord (vilket kan leda till att skriva bättre kod).

Vad är en databas?

Generellt sett tror jag att majoriteten av Wptuts + -läsarna vet vad en databas är.

Direkt från Wikipedia:

En databas är en organiserad samling av data. Uppgifterna är vanligtvis organiserade för att modellera relevanta aspekter av verkligheten (till exempel tillgängligheten av rum på hotell), på ett sätt som stöder processer som kräver denna information (till exempel att hitta hotell med lediga platser).

Det är en rättvis definition, men jag tror inte att det gör ett så bra jobb att illustrera WordPress-databasen eller liknande webbapplikationer - det är lite för generellt. Så här, låt oss skapa vår egen arbetsdefinition som vi kan använda i resten av serien.


Hur databaser är normalt representerade.

Låt oss försöka detta:

En databas består av minst en tabell. En tabell består av rader och kolumner som var och en lagrar unika bitar av information. Varje rad heter en rekord. Flera tabeller kan finnas i en databas, och ibland kan tabeller relateras till varandra.

Kanske den mest förvirrande delen av det jag har delat ovan är att tabeller kan relateras till varandra. Vi kommer att se den här ideen före artikelns slut - men först, låt oss diskutera WordPress-databasen.

WordPress Database Schema

Kort sagt består WordPress-databasen av elva tabeller (om du inte använder Multisite, men det ligger utanför ramen för denna serie).

Nu har varje tabell också en egen uppsättning kolumner som representerar en mängd information som lagras i tabellen. Till exempel, wp_posts bordet har en kolumn kallad POST_CONTENT som representerar det faktiska innehållet som lagras i ett inlägg.

Tabellerna och deras beskrivningar är följande:

  • wp_users Håller listan över användare som är registrerade i WordPress-installationen. Detta inkluderar saker som e-postadress, lösenord, visningsnamn och så vidare.
  • wp_usermeta innehåller information relaterad till varje användare. Här kan du lagra ytterligare information om varje användare.
  • wp_posts är där all postinformation lagras. Sanningen är det spelar ingen roll om det är ett inlägg, en sida eller en anpassad posttyp - all information som titel, innehåll och mer lagras här.
  • wp_postmeta är där metadata för varje inlägg lagras. I den här tabellen kan du spara och hämta mer information om varje inlägg.
  • wp_comments är där kommentarerna för varje inlägg (igen, oavsett typ) lagras.
  • wp_commentmeta Som de andra meta-tabellerna kan du lagra mer information om varje kommentar än vad som redan sparats i kommentarfältet.
  • wp_terms är där kategorierna och taggarna är lagrade. Eftersom förhållandet mellan inlägg, sidor, anpassade posttyper, kategorier och taggar kan bli lite mer komplicerat finns det några extra tabeller.
  • wp_term_taxonomy ger en beskrivning av kategorin eller taggen (eller till och med länken om du fortfarande använder dem) i wp_terms tabell.
  • wp_term_relationship lagrar relationerna från ett visst inlägg till sin kategori (eller kategorier) och / eller tagg (eller taggar).
  • wp_options är där alla inställningar hålls - det här inkluderar de som skickas och konfigureras med WordPress och de som skapas genom att använda inställnings API.
  • wp_links är ett bord som fortfarande finns i WordPress-databasen trots att det inte längre finns ett användargränssnitt för data. Om du någonsin använt den här funktionen är du bekant med Länkar och hur de fungerar och det här är tabellen där de lagras.

Och det är allt som finns i WordPress-databasen. Det är relativt enkelt och enkelt, rätt?

Inlägg sparas i inläggstabellen, Kommentarer i kommentarfältet, Användare i användartabellen och så vidare. Visst, det finns några subtila nyanser (som det faktum att sidor lagras i tabellen Inlägg); Det är emellertid ett relativt okomplicerat schema att följa.

Det är en bra sak.

Kom också ihåg hur vi tidigare nämnde att vissa tabeller kan referera till varandra? Ett bra exempel på detta skulle vara tabellen Kommentarer och tabellen Inlägg. Eftersom kommentarer lämnas på ett specifikt inlägg behöver en kommentar veta vilket post-ID det är förknippat med så att när ett inlägg laddas kan kommentarer som är relaterade till det inläggets ID hämtas.


En databas och dess tabeller.

Hur som helst, det här är mer detaljerat än att vi dyker in i den här serien, men det är förhoppningsvis tillräckligt att ge dig en idé. Om du är intresserad av mer teknisk information, så är förhållandet mellan tabellerna, kolumnerna och mycket mer, så krypterar du WordPress Codex-artikeln på databasbeskrivningen.


Slutsats

Vid denna tidpunkt har vi täckt allt vi behöver täcka i vår primer i WordPress-databasen. Förhoppningsvis hjälper det här att dra tillbaka gardinen för vad som händer under käften när du sparar information i WordPress, men nu när vi har täckt det här är det dags att titta på ett verktyg som gör att arbetet med data migreringar är extremt lätt.

Och med tanke på att vi nu har en förståelse för hur databasen är organiserad, borde vi också ha en förståelse för hur migreringar fungerar.