sql >> Database >  >> RDS >> Database

Wat zijn databanken?


Inleiding

Databases zijn essentiële componenten voor veel moderne applicaties en tools. Als gebruiker kunt u elke dag tientallen of honderden databases gebruiken wanneer u websites bezoekt, applicaties op uw telefoon gebruikt of artikelen koopt in de supermarkt. Als ontwikkelaar zijn databases het belangrijkste onderdeel dat wordt gebruikt om gegevens na de levensduur van uw toepassing te bewaren. Maar wat zijn databases precies en waarom komen ze zo vaak voor?

In dit artikel bespreken we:

  • wat databases zijn
  • hoe ze worden gebruikt door mensen en applicaties om verschillende soorten gegevens bij te houden
  • welke functies databases bieden
  • wat voor soort garanties ze geven
  • hoe ze zich verhouden tot andere methoden van gegevensopslag

Ten slotte bespreken we hoe applicaties afhankelijk zijn van databases voor het opslaan en ophalen van gegevens om complexe functionaliteit mogelijk te maken.



Wat zijn databases?

Databases zijn logische structuren die worden gebruikt om gegevens te organiseren en op te slaan voor toekomstige verwerking, opvraging of evaluatie. In de context van computers worden deze structuren bijna altijd beheerd door een applicatie die een databasebeheersysteem wordt genoemd of DBMS . Het DBMS beheert speciale bestanden op de schijf van de computer en biedt een logische interface voor gebruikers en toepassingen.

Databasebeheersystemen zijn doorgaans ontworpen om gegevens volgens een specifiek patroon te ordenen. Deze patronen, genaamd databasetypes of databasemodellen, zijn de logische en structurele fundamenten die bepalen hoe individuele stukjes gegevens worden opgeslagen en beheerd. Er zijn veel verschillende databasetypes, elk met hun eigen voordelen en beperkingen. Het relationele model , dat gegevens organiseert in tabellen, rijen en kolommen met kruisverwijzingen, wordt vaak beschouwd als het standaardparadigma.

DBMS'en kunnen databases die ze beheren toegankelijk maken via verschillende middelen, waaronder opdrachtregelclients, API's, programmeerbibliotheken en beheerinterfaces. Via deze kanalen kunnen gegevens in het systeem worden opgenomen, naar behoefte worden georganiseerd en op verzoek worden geretourneerd.



Datapersistentie versus kortstondige opslag

Databases slaan gegevens op schijf of in het geheugen op.

Opslag op schijf is over het algemeen persistent , wat betekent dat de gegevens betrouwbaar worden opgeslagen voor later, zelfs als de databasetoepassing of de computer zelf opnieuw wordt opgestart.

Daarentegen wordt gezegd dat opslag in het geheugen kortstondig is of vluchtig . Tijdelijke opslag overleeft het afsluiten van applicaties of systemen niet. Het voordeel van in-memory databases is dat ze doorgaans erg snel zijn.

In de praktijk zullen veel omgevingen een combinatie van beide typen systemen gebruiken om de voordelen van elk type te benutten. Voor systemen die nieuwe schrijfbewerkingen naar de kortstondige laag accepteren, kan dit worden bereikt door periodiek kortstondige gegevens op schijf op te slaan. Andere systemen gebruiken alleen-lezen in-memory-kopieën van persistente gegevens om de leestoegang te versnellen. Deze systemen kunnen de gegevens op elk moment opnieuw laden uit de backing-opslag om hun gegevens te vernieuwen.

Back-up opslagtype Gegevens overleven herstart? Voordelen Voorbeelden
Op schijf Ja Levensduur gegevens MySQL
In het geheugen Nee Operationele snelheid memcached


Interactie met databases om uw gegevens te beheren

Hoewel het databasesysteem ervoor zorgt dat de gegevens op schijf of in het geheugen worden opgeslagen, biedt het ook een interface voor gebruikers of toepassingen. De interfaces voor de database moeten in staat zijn om de bewerkingen weer te geven die externe partijen kunnen uitvoeren en moeten in staat zijn om alle gegevenstypen weer te geven die het systeem ondersteunt.

Volgens Wikipedia staan ​​databases doorgaans de volgende vier soorten interacties toe:

  • Gegevensdefinitie :definities van de gegevensstructuur maken, wijzigen en verwijderen. Deze bewerkingen wijzigen de eigenschappen die van invloed zijn op hoe de database gegevens accepteert en opslaat. Dit is in sommige typen databases belangrijker dan in andere.
  • Bijwerken :gegevens in de database invoegen, wijzigen en verwijderen. Deze bewerkingen veranderen de feitelijke gegevens die worden beheerd.
  • Ophalen :Toegang geven tot de opgeslagen gegevens. Gegevens kunnen worden opgehaald zoals ze zijn of kunnen vaak worden gefilterd of getransformeerd om ze in een nuttiger formaat te masseren. Veel databasesystemen begrijpen rijke querytalen om dit te bereiken.
  • Beheer :Andere taken zoals gebruikersbeheer, beveiliging, prestatiebewaking, enz. Die noodzakelijk zijn, maar niet rechtstreeks verband houden met de gegevens zelf.

Laten we deze hieronder in wat meer detail bespreken.


Gegevensdefinities bepalen de vorm en structuur van gegevens binnen het systeem

Het creëren en controleren van de structuur die uw gegevens binnen de database zullen aannemen, is een belangrijk onderdeel van databasebeheer. Dit kan u helpen de vorm of structuur van uw gegevens te controleren voordat u deze in het systeem opneemt. U kunt er ook beperkingen mee instellen om ervoor te zorgen dat uw gegevens aan bepaalde parameters voldoen.

In databases die werken met zeer regelmatige gegevens, zoals relationele databases, staan ​​deze definities vaak bekend als het schema van de database. . Een databaseschema is een strikt overzicht van hoe gegevens moeten worden geformatteerd om door een bepaalde database te worden geaccepteerd. Dit omvat de specifieke velden die in afzonderlijke records aanwezig moeten zijn, evenals vereisten voor waarden zoals gegevenstype, veldlengte, minimum- of maximumwaarden, enz. Een databaseschema is een van de belangrijkste hulpmiddelen die een database-eigenaar moet beïnvloeden en controle over de gegevens die in het systeem worden opgeslagen.

Databasebeheersystemen die flexibiliteit belangrijker vinden dan regelmaat, worden vaak schemaloze databases genoemd . Hoewel dit lijkt te impliceren dat de gegevens die in deze databases zijn opgeslagen geen structuur hebben, is dit meestal niet het geval. In plaats daarvan wordt de structuur van de database bepaald door de data zelf en de kennis van en de relatie met de data door de applicatie. De database heeft meestal nog een structuur, maar het databasebeheersysteem is minder betrokken bij het afdwingen van beperkingen. Dit is een ontwerpkeuze die voor- en nadelen heeft, afhankelijk van de situatie.



Gegevensupdates om gegevens op te nemen, aan te passen en uit het systeem te verwijderen

Gegevensupdates omvatten elke bewerking die:

  • Voert nieuwe gegevens in het systeem in
  • Wijzigt bestaande invoer
  • Verwijdert vermeldingen uit de database

Deze mogelijkheden zijn essentieel voor elke database en vormen in veel gevallen de meerderheid van de acties die het databasesysteem verwerkt. Dit soort activiteiten — bewerkingen die wijzigingen in de gegevens in het systeem veroorzaken — staan ​​gezamenlijk bekend als write operaties.

Schrijfacties zijn belangrijk voor elke gegevensbron die in de loop van de tijd zal veranderen. Zelfs het verwijderen van gegevens, een destructieve actie, wordt als een schrijfbewerking beschouwd omdat het de gegevens in het systeem wijzigt.

Aangezien schrijfbewerkingen gegevens kunnen wijzigen, zijn deze acties potentieel gevaarlijk. De meeste databasebeheerders configureren hun systemen om schrijfbewerkingen te beperken tot bepaalde toepassingsprocessen om de kans op onbedoelde of kwaadwillige verwisseling van gegevens te minimaliseren. Voor gegevensanalyse, die bestaande gegevens gebruiken om vragen over de prestaties van een website of het gedrag van bezoekers te beantwoorden, is bijvoorbeeld alleen leesrechten vereist. Aan de andere kant moet het deel van de applicatie dat de bestellingen van een gebruiker registreert, nieuwe gegevens naar de database kunnen schrijven.



Gegevens ophalen om informatie te extraheren of specifieke vragen te beantwoorden

Het opslaan van gegevens is niet erg handig, tenzij je een manier hebt om het op te halen wanneer je het nodig hebt. Aangezien het retourneren van gegevens geen invloed heeft op de informatie die momenteel in de database is opgeslagen, worden deze acties lezen genoemd activiteiten. Leesbewerkingen zijn de belangrijkste manier om gegevens te verzamelen die al in een database zijn opgeslagen.

Databasebeheersystemen hebben bijna altijd een eenvoudige manier om toegang te krijgen tot gegevens door middel van een unieke identifier, vaak een primaire sleutel genoemd. . Dit geeft toegang tot elk item door de sleutel op te geven.

Veel systemen hebben ook geavanceerde methoden voor het doorzoeken van de database om gegevenssets te retourneren die voldoen aan specifieke criteria of om gedeeltelijke informatie over invoer te retourneren. Dit type bevragingsflexibiliteit helpt het databasebeheersysteem te werken als een gegevensverwerker naast de basismogelijkheden voor gegevensopslag. Door specifieke zoekopdrachten te ontwikkelen, kunnen gebruikers het databasesysteem vragen om alleen de informatie te retourneren die ze nodig hebben. Deze functie wordt vaak gebruikt in combinatie met schrijfbewerkingen om een ​​specifiek record te lokaliseren en te wijzigen op basis van zijn eigenschappen.



Het databasesysteem beheren om alles soepel te laten verlopen

De laatste categorie acties die databases vaak ondersteunen, zijn administratieve functies. Dit is een brede, algemene klasse van acties die de databaseomgeving helpt ondersteunen zonder de gegevens zelf rechtstreeks te beïnvloeden. Enkele items die mogelijk in deze groep passen zijn:

  • Gebruikers, machtigingen, authenticatie en autorisatie beheren
  • Back-ups instellen en onderhouden
  • Het back-upmedium configureren voor opslag
  • Replicatie en andere schaaloverwegingen beheren
  • Online en offline herstelopties bieden

Deze reeks acties sluit aan bij de algemene administratieve zorgen die elke moderne applicatie gemeen heeft.

Administratieve handelingen staan ​​misschien niet centraal in de kernfunctionaliteit van gegevensbeheer, maar deze mogelijkheden onderscheiden vergelijkbare databasebeheersystemen vaak. Het gemakkelijk kunnen back-uppen en herstellen van gegevens, het implementeren van gebruikersbeheer dat aansluit op bestaande systemen of het schalen van uw database om aan de vraag te voldoen, zijn allemaal essentiële functies voor het werken in productie. Databases die geen aandacht schenken aan deze gebieden, hebben vaak moeite om acceptatie te krijgen in omgevingen in de echte wereld.




Welke verantwoordelijkheden hebben databases?

Hoe kunnen we, gezien de bovenstaande beschrijving, de primaire verantwoordelijkheden van databases veralgemenen? Het antwoord hangt sterk af van het type database dat wordt gebruikt en de vereisten van uw toepassingen. Toch zijn er een gemeenschappelijke reeks verantwoordelijkheden die alle databases willen bieden.


De integriteit van gegevens waarborgen door getrouw opnemen en opnieuw samenstellen

Gegevensintegriteit is een fundamentele vereiste van een databasesysteem, ongeacht het doel of ontwerp. Gegevens die in de database worden geladen, moeten betrouwbaar kunnen worden opgehaald zonder onverwachte wijziging, manipulatie of verwijdering. Dit vereist betrouwbare methoden voor het laden en ophalen van gegevens, evenals het serialiseren en deserialiseren van de gegevens als dat nodig is om ze op fysieke media op te slaan.

Databases zijn vaak afhankelijk van functies om gegevens te verifiëren terwijl ze worden geschreven of opgehaald, zoals checksumming, of om te beschermen tegen problemen die worden veroorzaakt door onverwachte afsluitingen, bijvoorbeeld met behulp van technieken zoals write-ahead-logboeken. Gegevensintegriteit wordt uitdagender naarmate de gegevensopslag meer gedistribueerd is, aangezien elk deel van het systeem de huidige gewenste status van elk gegevensitem moet weerspiegelen. Dit wordt vaak bereikt met robuustere vereisten en reacties van meerdere leden wanneer gegevens in het systeem worden gewijzigd.



Prestaties bieden die voldoen aan de vereisten van de implementatieomgeving

Databases moeten adequaat functioneren om bruikbaar te zijn. De prestatiekenmerken die u nodig hebt, zijn sterk afhankelijk van de specifieke eisen van uw toepassingen. Elke omgeving heeft een unieke balans tussen lees- en schrijfverzoeken en u zult moeten beslissen wat acceptabele prestaties betekenen voor beide categorieën.

Databases zijn over het algemeen beter in het uitvoeren van bepaalde soorten bewerkingen dan andere. Kenmerken van operationele prestaties zijn vaak een weerspiegeling van het type database dat wordt gebruikt, het gegevensschema of de gegevensstructuur en de bewerking zelf. In sommige gevallen kunnen functies zoals indexering , dat een alternatieve, voor prestaties geoptimaliseerde opslag van veelgebruikte gegevens creëert, kan deze items sneller ophalen. Soms past de database gewoon niet goed bij de toegangspatronen die worden aangevraagd. Dit is iets om rekening mee te houden wanneer u beslist welk type database u nodig heeft.



Proces instellen om veilige gelijktijdige toegang mogelijk te maken

Hoewel dit geen strikte vereiste is, moeten databases praktisch gezien gelijktijdige toegang mogelijk maken. Dit betekent dat meerdere partijen tegelijkertijd met de database moeten kunnen werken. Records moeten leesbaar zijn voor een willekeurig aantal gebruikers tegelijk en beschrijfbaar zijn als ze momenteel niet zijn vergrendeld door een andere gebruiker.

Gelijktijdige toegang betekent meestal dat de database enkele andere fundamentele functies moet implementeren, zoals gebruikersaccounts, een machtigingssysteem en authenticatie- en autorisatiemechanismen. Het moet ook strategieën ontwikkelen om te voorkomen dat meerdere gebruikers tegelijkertijd proberen dezelfde gegevens te manipuleren. Recordvergrendeling en transacties worden vaak geïmplementeerd om deze problemen aan te pakken.



Gegevens afzonderlijk of geaggregeerd ophalen

Een van de fundamentele verantwoordelijkheden van een database is de mogelijkheid om op verzoek gegevens op te halen. De verzoeken kunnen betrekking hebben op afzonderlijke gegevens die aan een enkel record zijn gekoppeld, of ze kunnen betrekking hebben op het ophalen van de gegevens die in veel verschillende records zijn gevonden. Beide gevallen moeten in de meeste systemen mogelijk zijn.

In de meeste databases wordt tijdens het ophalen een bepaald niveau van gegevensverwerking door de database zelf verzorgd. Deze kunnen de volgende soorten bewerkingen omvatten:

  • Zoeken op criteria
  • Filteren en vasthouden aan beperkingen
  • Specifieke velden extraheren
  • Middelen berekenen, sorteren, enz.

Met deze opties kunt u de gewenste gegevens formuleren en de indeling die het nuttigst is.




Alternatieven voor databases

Voordat we verder gaan, moeten we even kijken wat uw opties zijn als u geen database gebruikt.

De meeste methoden die gegevens opslaan, kunnen worden geclassificeerd als een soort database. Een paar uitzonderingen zijn de volgende.


Lokaal geheugen of tijdelijke bestandssystemen

Soms produceren applicaties data die niet bruikbaar zijn of die alleen relevant zijn voor de levensduur van de applicatie. In deze gevallen wil je die gegevens misschien in het geheugen bewaren of ze naar een tijdelijk bestandssysteem verplaatsen, omdat je ze niet meer nodig hebt als de toepassing eenmaal is afgesloten. Voor gevallen waarin de gegevens nooit nuttig zijn, wilt u misschien de uitvoer volledig uitschakelen of deze registreren in /dev/null .



Serialiseren van toepassingsgegevens rechtstreeks naar het lokale bestandssysteem

Een ander geval waarbij een database mogelijk niet nodig is, is waar een kleine hoeveelheid gegevens in plaats daarvan direct kan worden geserialiseerd en gedeserialiseerd. Dit is alleen praktisch voor kleine hoeveelheden gegevens met een voorspelbaar gebruikspatroon waarbij niet of nauwelijks sprake is van gelijktijdigheid. Dit schaalt niet goed, maar kan in bepaalde gevallen handig zijn, zoals het uitvoeren van lokale loggegevens.



Bestandsachtige objecten direct op schijf of object-storage opslaan

Soms kunnen gegevens van toepassingen rechtstreeks naar schijf of een alternatieve winkel worden geschreven in plaats van in een database op te slaan. Als de gegevens bijvoorbeeld al zijn georganiseerd in een bestandsgeoriënteerde indeling, zoals een afbeeldings- of audiobestand, en geen extra metagegevens nodig hebben, is het misschien het gemakkelijkst om deze rechtstreeks op schijf of in een speciale objectopslag op te slaan.




Waar worden databases voor gebruikt?

Vrijwel alle applicaties en websites die niet geheel statisch zijn, zijn afhankelijk van een database ergens in hun omgeving. Het primaire doel van de database bepaalt vaak het type database dat wordt gebruikt, de opgeslagen gegevens en de gebruikte toegangspatronen. Vaak worden meerdere databasesystemen ingezet om verschillende soorten gegevens met verschillende vereisten te verwerken. Sommige databases zijn flexibel genoeg om meerdere rollen te vervullen, afhankelijk van de aard van verschillende datasets.

Laten we een voorbeeld bekijken om de contactpunten te bespreken die een typische webtoepassing kan hebben met databases. We doen alsof de applicatie een standaard winkelpui bevat en items verkoopt die het in een inventaris bijhoudt.


Sitegegevens opslaan en verwerken

Een van de belangrijkste toepassingen van databases is het opslaan en verwerken van gegevens met betrekking tot de site. Deze items beïnvloeden hoe informatie op de site is georganiseerd en vormen in veel gevallen de meeste "inhoud" van de site.

In de hierboven genoemde voorbeeldtoepassing zou de database de meeste inhoud voor de site bevatten, inclusief productinformatie, inventarisdetails en gebruikersprofielinformatie. Dit betekent dat de database of een tussenliggende cache zou worden geraadpleegd telkens wanneer een productlijst, een productdetailpagina of een gebruikersprofiel moet worden weergegeven.

Een database zou ook betrokken zijn bij het weergeven van huidige en eerdere bestellingen, het berekenen van verzendkosten en het toepassen van kortingen door kortingscodes te controleren of frequente klantbeloningen te berekenen. Onze voorbeeldsite zou het databasesysteem gebruiken om bestellingen correct op te bouwen door productinformatie, voorraad en gebruikersinformatie te combineren. De samengestelde informatie die in een bestelling is vastgelegd, zou opnieuw in een database worden opgeslagen om de orderverwerking te volgen, retouren mogelijk te maken, bestellingen te annuleren of te wijzigen of een betere klantenondersteuning mogelijk te maken.



Informatie analyseren om betere beslissingen te nemen

De acties in de laatste categorie hadden betrekking op de basisfunctionaliteit van de website. Hoewel deze erg belangrijk zijn voor het afhandelen van de gegevensvereisten van de applicatielaag, vertegenwoordigen ze niet het hele plaatje.

Zodra uw webtoepassing begint met het registreren van gebruikers en het verwerken van bestellingen, wilt u waarschijnlijk gedetailleerde vragen kunnen beantwoorden over hoe verschillende producten verkopen, wie uw meest winstgevende gebruikers zijn en welke factoren uw verkoop beïnvloeden. Dit zijn analytische vragen die op elk moment kunnen worden gesteld om up-to-date informatie te verzamelen over de trends en prestaties van uw organisatie.

Dit soort operaties wordt vaak business intelligence genoemd of analyse . Samen helpen ze organisaties te begrijpen wat er in het verleden is gebeurd en om geïnformeerde wijzigingen aan te brengen. Databasesystemen slaan de meeste gegevens op die tijdens deze processen worden gebruikt en moeten de juiste tooling- of querymogelijkheden bieden om vragen hierover te beantwoorden.

In onze voorbeeldtoepassing kunnen de databases worden doorzocht om vragen te beantwoorden over producttrends, gebruikersregistratienummers, naar welke gegevens we het meest verzenden of naar wie onze meest loyale gebruikers zijn. Deze relatief eenvoudige vragen kunnen worden gebruikt om complexere vragen op te stellen om factoren die van invloed zijn op de productprestaties beter te begrijpen en te beheersen.



Softwareconfiguratie beheren

Sommige typen databases worden gebruikt als opslagplaatsen voor configuratiewaarden voor andere software op het netwerk. Deze dienen als een centrale bron van waarheid voor configuratiewaarden op het netwerk. Wanneer nieuwe services worden opgestart, worden ze geconfigureerd om de waarden voor specifieke sleutels op het netwerkadres van de configuratiedatabase te controleren. Hierdoor kunt u alle informatie die nodig is om services op te starten op één locatie opslaan.

Na het bootstrappen kunnen applicaties worden geconfigureerd om de sleutels met betrekking tot hun configuratie te controleren op wijzigingen. Als er een wijziging wordt gedetecteerd, kan de toepassing zichzelf opnieuw configureren om de nieuwe configuratie te gebruiken. Dit proces wordt soms georkestreerd door een beheerproces dat de nieuwe waarden in de loop van de tijd uitrolt door oude services af te bouwen wanneer de nieuwe services verschijnen, en de actieve configuratie in de loop van de tijd te veranderen om de beschikbaarheid te behouden.

Onze applicatie zou dit type database kunnen gebruiken om persistente configuratiegegevens op te slaan voor onze hele applicatieomgeving. Onze applicatieservers, webservers, load balancers, berichtenwachtrijen en meer kunnen worden geconfigureerd om te verwijzen naar een configuratiedatabase om hun productie-instellingen op te halen. De ontwikkelaars van de applicatie kunnen dan het gedrag van de omgeving aanpassen door configuratiewaarden op een centrale locatie aan te passen.



Logboeken, gebeurtenissen en andere output verzamelen

Het uitvoeren van applicaties die actief verzoeken dienen, kunnen veel output genereren. Dit omvat logbestanden, gebeurtenissen en andere uitvoer. Deze kunnen naar schijf of een andere onbeheerde locatie worden geschreven, maar dit beperkt hun bruikbaarheid. Het verzamelen van dit soort gegevens in een database maakt het gemakkelijker om ermee te werken, patronen te ontdekken en gebeurtenissen te analyseren wanneer er iets onverwachts gebeurt of wanneer u meer wilt weten over historische prestaties.

Onze voorbeeldtoepassing verzamelt mogelijk logboeken van elk van onze systemen in één database voor eenvoudigere analyse. Dit kan ons helpen correlaties tussen gebeurtenissen te vinden als we proberen de bron van problemen te analyseren of de gezondheid van onze omgeving als geheel te begrijpen.

Afzonderlijk kunnen we statistieken verzamelen die door onze infrastructuur en code zijn geproduceerd in een tijdreeksdatabase , een database die speciaal is ontworpen om waarden in de loop van de tijd bij te houden. Deze database kan worden gebruikt voor realtime monitoring- en visualisatietools om de ontwikkelings- en operationele teams van de applicatie te voorzien van informatie over prestaties, foutenpercentages, enz.




Hoe werken verschillende rollen met databases?

Databases zijn fundamenteel voor het werk van veel verschillende rollen binnen organisaties. In kleinere teams kunnen een of enkele individuen verantwoordelijk zijn voor het uitvoeren van de taken van verschillende rollen. In grotere bedrijven zijn deze verantwoordelijkheden vaak opgedeeld in afzonderlijke rollen die worden uitgevoerd door toegewijde individuen of teams.


Data architecten

Data-architecten zijn verantwoordelijk voor de algemene macrostructuur van de databasesystemen, de interfaces die ze blootstellen aan applicaties en ontwikkelingsteams, en de onderliggende technologieën en infrastructuur die nodig zijn om aan de databehoeften van de organisatie te voldoen.

Mensen in deze rol beslissen over het algemeen over het juiste databasemodel en de implementatie die voor verschillende toepassingen zullen worden gebruikt. Ze zijn verantwoordelijk voor het implementeren van databasebeslissingen door opties te onderzoeken, te beslissen over technologie, deze te integreren met bestaande systemen en een uitgebreide datastrategie voor de organisatie te ontwikkelen. Ze gaan holistisch om met de datasystemen en hebben een rol bij het bepalen en implementeren van datamodellen voor verschillende projecten.



DBA's (databasebeheerders)

Databasebeheerders, of DBA's, zijn personen die verantwoordelijk zijn voor het soepel laten werken van gegevenssystemen. Zij zijn verantwoordelijk voor het plannen van nieuwe datasystemen, het installeren en configureren van software, het opzetten van databasesystemen voor andere partijen en het managen van de performance. Ze zijn ook vaak verantwoordelijk voor het beveiligen van de database, het controleren op problemen en het maken van aanpassingen aan het systeem om te optimaliseren voor gebruikspatronen.

Databasebeheerders zijn experts in zowel individuele databasesystemen als hoe ze goed kunnen worden geïntegreerd met het onderliggende besturingssysteem en de hardware om de prestaties te maximaliseren. Ze werken intensief samen met teams die de databases gebruiken om de capaciteit en prestaties te helpen beheren en om teams te helpen bij het oplossen van problemen met het databasesysteem.



Applicatieontwikkelaars

Applicatieontwikkelaars werken op veel verschillende manieren met databases samen. Ze ontwikkelen veel van de applicaties die interactie hebben met de database. Dit is erg belangrijk omdat dit bijna altijd de enige applicaties zijn die bepalen hoe individuele gebruikers of klanten omgaan met de gegevens die door het databasesysteem worden beheerd. Prestaties, correctheid en betrouwbaarheid zijn ongelooflijk belangrijk voor applicatieontwikkelaars.

Ontwikkelaars beheren de gegevensstructuren die aan hun toepassingen zijn gekoppeld om hun gegevens op schijf te bewaren. Ze moeten mechanismen creëren of gebruiken die hun programmeergegevens kunnen koppelen aan het databasesysteem, zodat de componenten in harmonie kunnen samenwerken. Naarmate toepassingen veranderen, moeten ze de gegevens en gegevensstructuren binnen het databasesysteem synchroon houden. We zullen later in het artikel meer vertellen over hoe ontwikkelaars met databases werken.



SRE's (site betrouwbaarheidsingenieurs) en operationele professionals

SRE's (site betrouwbaarheidsingenieurs) en operationele professionals werken met databasesystemen vanuit een infrastructuur- en applicatieconfiguratieperspectief. Ze zijn mogelijk verantwoordelijk voor het leveren van extra capaciteit, het opzetten van databasesystemen, het zorgen dat de databaseconfiguratie overeenkomt met de organisatorische richtlijnen, het bewaken van de uptime en het beheren van back-ups.

In veel opzichten hebben deze personen overlappende verantwoordelijkheden met DBA's, maar zijn ze niet alleen gericht op databases. Operationeel personeel zorgt ervoor dat de systemen waarop applicaties waarop de rest van de organisatie vertrouwt, inclusief databasesystemen, betrouwbaar functioneren en minimale uitvaltijd hebben.



Business intelligence en data-analisten

Business intelligence-afdelingen en data-analisten zijn vooral geïnteresseerd in de data die al verzameld en beschikbaar zijn binnen het databasesysteem. Ze werken aan het ontwikkelen van inzichten op basis van trends en patronen in de gegevens, zodat ze toekomstige prestaties kunnen voorspellen, de organisatie kunnen adviseren over mogelijke veranderingen en vragen over de gegevens kunnen beantwoorden voor andere afdelingen, zoals marketing en verkoop.

Data-analisten kunnen over het algemeen uitsluitend werken met alleen-lezen toegang tot datasystemen. De query's die ze uitvoeren hebben vaak heel andere prestatiekenmerken dan die van de primaire applicaties. Daarom werken ze vaak met database-replica's of -kopieën, zodat ze langlopende en prestatie-intensieve geaggregeerde query's kunnen uitvoeren die anders het brongebruik van het primaire databasesysteem zouden kunnen beïnvloeden.




Hoe werk ik als ontwikkelaar met databases?

Dus hoe ga je als applicatieontwikkelaar eigenlijk te werk met databases? Op een basisniveau, als uw applicatie de status moet beheren en behouden, zal het werken met een database een belangrijk onderdeel van uw code zijn.


Gegevens vertalen tussen uw applicatie en de database

U moet een bestaande interface maken of gebruiken om met de database te communiceren. U kunt rechtstreeks verbinding maken met de database met behulp van reguliere netwerkfuncties, gebruik maken van eenvoudige bibliotheken of programmeerbibliotheken op een hoger niveau (bijvoorbeeld querybuilders of ORM's).

ORM's , of object-relationele mappers, zijn kaartlagen die de tabellen in de relationele database vertalen naar de klassen die worden gebruikt in objectgeoriënteerde programmeertalen en vice versa. Hoewel deze vertaling vaak nuttig is, is ze nooit perfect. Object-relationele impedantie komt niet overeen is een term die wordt gebruikt om de wrijving te beschrijven die wordt veroorzaakt door het verschil in hoe relationele databases en objectgeoriënteerde programma's gegevens structureren.

Hoewel relationele databases en objectgeoriënteerd programmeren twee specifieke ontwerpkeuzes beschrijven, is het probleem van de vertaling tussen de applicatie- en databaselaag een algemeen probleem dat bestaat ongeacht het databasetype of het programmeerparadigma. Database-abstractielaag is een meer algemene term voor software die verantwoordelijk is voor het vertalen tussen deze twee contexten.



Structurele wijzigingen synchroon houden met de database

Een belangrijk feit dat u zult ontdekken terwijl u uw toepassingen ontwikkelt, is dat aangezien de database buiten uw codebase bestaat, deze speciale aandacht nodig heeft om veranderingen in uw gegevensstructuur aan te kunnen. Dit probleem komt bij sommige database-ontwerpen vaker voor dan bij andere.

De meest gebruikelijke benadering voor het synchroniseren van de gegevensstructuren van uw toepassing met uw database is een proces dat databasemigratie wordt genoemd. of schemamigratie (beide in de volksmond gewoon bekend als migratie). Migratie omvat het bijwerken van de structuur van uw database om wijzigingen weer te geven naarmate het gegevensmodel van uw toepassing evolueert. Deze hebben meestal de vorm van een reeks bestanden, één voor elke evolutie, die de instructies bevatten die nodig zijn om de database in het nieuwe formaat om te zetten.



Toegang tot uw gegevens beveiligen en invoer opschonen

Een belangrijke verantwoordelijkheid bij het werken met databases als ontwikkelaar is ervoor te zorgen dat uw applicaties geen ongeautoriseerde toegang tot gegevens toestaan. Gegevensbeveiliging is een breed, gelaagd probleem met veel belanghebbenden. Uiteindelijk zullen sommige van de beveiligingsoverwegingen uw plicht zijn om voor te zorgen.

Uw toepassing heeft bevoorrechte toegang tot uw database nodig om routinetaken uit te voeren. For safety, the database's authorization framework can help restrict the type of operations your application can perform. However, you need to ensure that your application restricts those operations appropriately. For example, if your application manages user profile data, you have to prevent a user from manipulating that access to view or edit other users' information.

One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.




Conclusion

Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.

Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.




  1. 3 manieren om ALL in SQL Server te gebruiken

  2. CONCAT() Functie in Oracle

  3. LijstAGG in SQLSERVER

  4. Waarom retourneert CONNECT BY LEVEL op een tafel extra rijen?