Bakgrundshistoria: Jag var tvungen att gå en introduktionskurs i databaser.
I kursen lärde jag mig två saker:
Relationella databaser och icke-relationella databaser, men jag lärde mig aldrig riktigt skillnaden mellan de två, så jag ville återuppväcka min nyfikenhet på databaser och skillnaderna mellan de två.
- En relationell databas, som definierades av E.F Codd 1970, är en digital databas som bygger på den relationella datamodellen. Data lagras i tabeller som innehåller rader (som representerar en post) och kolumner (som lagrar och sorterar en viss typ av information). Relationer upprättas genom primära och utländska nycklar.
Språk: SQL(Structured Query Language), MySQL, PostgreSQL, sqlite3
Fördelar:
- Kan hantera många komplexa frågor, databastransaktioner och rutinanalyser av data.
- ACID(Atomity, Consistency, Isolation, Durability): Uppsättning av egenskaper som säkerställer tillförlitliga databastransaktioner.
Nackdelar:
- Kan inte lagra komplexa eller mycket stora bilder, siffror, mönster och multimediaprodukter
- Kan bli mycket kostsamt med underhåll och nya servrar
Genial! Men vad händer om våra datamängder är för stora eller ostrukturerade?
Non-relationell databas eller NoSQL
Vad är en icke-relationell databas?
- Non-relationella databaser fanns redan i slutet av 1960-talet, men termen användes inte förrän 1998 av Carlo Strozzi som ledde utvecklingen av NoSQL.
- ”En NoSQL-databas (som ursprungligen hänvisar till ”icke-SQL” eller ”icke-relationell”) tillhandahåller en mekanism för lagring och hämtning av data som är modellerade på andra sätt än de tabellerelationer som används i relationella databaser.” – Wikipedia
Typer av NoSQL-databaser:
Column Store: Använder begreppet keyspace som innehåller alla kolumnfamiljer som innehåller rader och kolumner för att lagra och organisera data.
Databas: Apache HBase, Cassandra
Nyckelvärdearkiv: Apache HBase, Cassandra
Nyckelvärdearkiv: Använder en associativ matris (map eller dictionary) som grundläggande datamodell. Data representeras som en samling nyckel-värdepar och en nyckel kommer att dyka upp högst en gång i samlingen. Du kan lagra ett värde, t.ex. ett heltal, en sträng, en JSON-struktur eller en array, tillsammans med en nyckel som används för att referera till det värdet.
Databas: Redis, Amazon DynamoDB
Databas: Redis, Amazon DynamoDB
Graph: Är en databas som använder grafstrukturer för att representera och lagra data. Detta ger användarna möjlighet att snabbt gå igenom alla anslutna värden och hitta insikter i relationerna.
Databas: neo4J, OrientDB, Titan
Dokumentorienterad databas: Databaser som är inriktade på dokument: En dokumentorienterad databas, eller dokumentarkiv, är ett datorprogram som är utformat för att lagra, hämta och hantera dokumentorienterad information, även kallad halvstrukturerad data.
Databas: MongoDB, Couchbase
Fördelar:
- Stora volymer av strukturerade, halvstrukturerade och ostrukturerade data
- Objektsorienterad programmering som är lätt att använda och flexibel (MongoDB är i princip skriven i javascript)
- Effektiv, skalbar arkitektur i stället för dyr monolitisk arkitektur
Objektorienterad programmering:
- Mindre stöd eftersom NoSQL-databaser vanligtvis är öppen källkod
- Administration: NoSQL-databaser kräver teknisk kompetens för att kunna installeras och underhållas.
- Mindre moget. NoSQL-databaser växer fortfarande och många funktioner håller fortfarande på att implementeras.
Vilken ska man använda?
Företagen använder en blandning av både traditionella och icke-relationella databaser för att uppfylla sina företagskrav och behov.
Relationella databaser:
Traditionella relationella databaser är mycket bra på att hålla dina datatransaktioner säkra och att göra komplexa förfrågningar för att få information. Företag som redan är strukturerade och som inte upplever en massiv tillväxt kommer sannolikt att hålla sig till traditionella databaser.
Non-relationella databaser:
Genom att lagra stora mängder data med liten struktur. Företag som växer i snabb takt, t.ex. nystartade företag, använder mer icke-relationella databaser på grund av deras skalbarhet och flexibilitet. Tillsammans med molnet kan icke-relationella databaser också spara mycket pengar för företag.
Data Fun Facts:
- Data växer snabbare än någonsin tidigare och fram till år 2020 kommer cirka 1,7 megabyte ny information att skapas varje sekund för varje människa på planeten.
- Denna gång kommer vårt ackumulerade digitala universum av data att växa från 4,4 zettabytes i dag till cirka 44 zettabytes, eller 44 triljoner gigabyte.
- Vi ser en massiv ökning av video- och fotodata, där det varje minut laddas upp upp till 300 timmar video bara till YouTube.
- I år kommer över 1,4 miljarder smarta telefoner att levereras – alla packade med sensorer som kan samla in alla typer av data, för att inte tala om de data som användarna själva skapar.
- Som en följd av detta kommer det inom fem år att finnas över 50 miljarder smarta uppkopplade enheter i världen, som alla är utvecklade för att samla in, analysera och dela data.