MySQL
Udviklet af | MySQL AB , Sun Microsystems og Oracle |
---|---|
Første version | 1994 |
Sidste version | 8.0.24 (20. april 2021) |
Avanceret version | 8.0 RC1 (25. september 2017) |
Depositum | MySQL på GitHub |
Projektstatus | I konstant udvikling |
Skrevet i | C og C ++ |
Operativ system | Linux , Microsoft Windows , macOS , FreeBSD , Solaris og Unix-typen |
Læs formater | MySQL tabel definitionsformat ( d ) |
Skriftlige formater | MySQL tabel definitionsformat ( d ) |
Sprog | engelsk |
Type |
Relational database management system ( en ) Softwareserver ( d ) |
Distributionspolitik | Ledig |
Licens | GNU General Public License version 2 og proprietær licens |
Internet side | www.mysql.com |
MySQL (udtales [ maj.ɛs.ky.ɛl ]) er enrelationel database management system (RDBMS). Det distribueres under en dobbelt GPL og proprietær licens. Det er en afde mest anvendtesoftwaretil databasestyring i verden, både af offentligheden (hovedsagelig webapplikationer) og af professionelle, i konkurrence med Oracle , PostgreSQL og Microsoft SQL Server .
Navnet stammer fra fornavnet på datteren til medskaberen Michael Widenius , My (sv) (udtaler [ min ]). SQL henviser til Structured Query Language , det anvendte forespørgselssprog .
MySQL AB blev købt den16. januar 2008af Sun Microsystems for 1 milliard dollar . I 2009 blev Sun Microsystems købt af Oracle Corporation og placerede de to konkurrerende produkter Oracle Database og MySQL i hænderne på et enkelt firma . Denne buyout blev godkendt af Europa-Kommissionen den21. januar 2010.
Siden Maj 2009, skaberen Michael Widenius oprettede MariaDB (Maria er fornavnet på hans anden datter) for at fortsætte sin udvikling som et Open Source- projekt .
MySQL er en relationel SQL- databaseserver , der er udviklet med høj læseevne i tankerne, hvilket betyder, at den er mere rettet mod at servere allerede eksisterende data end for hyppige og meget sikre opdateringer. Det er multi-threaded og multi-user.
Det er gratis , open source software , der er udviklet under en dobbelt licens, alt efter om det er fordelt med et gratis produkt eller med et proprietært produkt. I sidstnævnte tilfælde opkræves licensen, ellers gælder GNU General Public License (GPL). Software, der integrerer MySQL-kode eller integrerer MySQL under installationen, skal derfor være gratis eller erhverve en betalt licens. Men hvis databasen er adskilt fra proprietær software, der kun bruger tredjeparts- API'er (f.eks. I C # eller php ), er der ikke behov for at erhverve en betalt MySQL-licens. Denne type dobbelt licensering bruges af andre produkter, såsom rammen for softwareudvikling Qt (til versioner før 4.5).
MySQL kører på mange forskellige operativsystemer , herunder AIX , IBM i-5, BSDi , FreeBSD , HP-UX , Linux , Mac OS X , NetWare , NetBSD , OpenBSD , OS / 2 Warp, SGI IRIX , Solaris , SCO OpenServer , SCO UnixWare , Tru64 Unix, Windows .
Databaserne er tilgængelige ved hjælp af programmeringssprogene C , C ++ , VB , VB .NET , C # , Delphi / Kylix , Eiffel , Java , Perl , PHP , Python , Windev , Ruby og Tcl ; en specifik API er tilgængelig for hver af dem. En ODBC- grænseflade kaldet MyODBC er også tilgængelig. I Java kan MySQL bruges transparent med JDO- standarden .
MySQL understøtter to computersprog , SQL- forespørgselssproget og SQL / PSM (Persistent Stored Modules), en standardiseret proceduremæssig udvidelse til SQL inkluderet i SQL: 2003-standarden. SQL / PSM, introduceret i version 5 af MySQL, giver dig mulighed for at kombinere SQL-forespørgsler og procedureanvisninger (sløjfer, betingelser osv.) For at skabe komplekse processer, der er beregnet til at blive gemt på databaseserveren (objektserver), såsom lagrede procedurer eller udløsere .
MySQL er en del af LAMP- kvartetten : Linux , Apache , MySQL, PHP . Det tilhører også sine WAMP (Windows) og MAMP (Mac OS) varianter .
PHP / MySQL-paret bruges i vid udstrækning af websteder og tilbydes af de fleste webhosts . Mere end halvdelen af webstederne kører på Apache , som oftest bruges i forbindelse med PHP og MySQL.
Wikipedia brugte MySQL indtil udgangen af 2012 ( MariaDB bruges i dag), mange virksomheder inklusive Google , Yahoo! , YouTube , Adobe , Airbus , Alstom , Crédit Agricole , AFP , Reuters , BBC News , Ernst & Young , Alcatel-Lucent bruger det stadig.
MySQL understøtter SQL2-standarden (brug af RIGHT JOIN og LEFT JOIN ), og overholdelse af denne standard sikrer, at den respekterer de tilsvarende standardiserede forespørgsler. Funktionerne i de nyeste SQL- standarder implementeres imidlertid ikke alle, og nogle respekterer ikke den anbefalede syntaks (f.eks. Sammenkædning), hvilket forhindrer interoperabiliteten af forespørgsler mellem forskellige DBMS .
To vigtigste motorer er til stede i MySQL: MyISAM og InnoDB.
MyISAM, i modsætning til InnoDB , understøtter ikke transaktioner eller automatisk tabelintegritet, det er ikke beregnet til applikationer, hvor datakonsistens er kritisk; dens ydeevne gør det dog velegnet til applikationer, der kræver en enkel og billig database at implementere.
For brugere er phpMyAdmin et webværktøj, der ofte er tilgængeligt til at oprette, udfylde og bruge MySQL-databaser.
Tabellerne i SQL-databaser og dem i regneark kommunikerer godt i begge retninger (kun for numeriske data og strenge) ved hjælp af CSV- format . Backup- og gendannelsesformater findes i form af SQL-kommandoer såvel som i XML- format .
Interessen for at bruge åbne værktøjer har også fået nogle bankvirksomheder som Crédit Mutuel , Crédit Agricole , Crédit Lyonnais og Canadas Development Bank til at inkludere MySQL i kataloget over deres interne IT-produkter.
MySQL er et svensk selskabs arbejde, MySQL AB, grundlagt af David Axmark , Allan Larsson og Michael "Monty" Widenius .
Navnet MySQL stammer fra kombinationen af My , datter af medstifter Michael "Monty" Widenius , med akronymet SQL (ifølge dokumentationen til den nyeste version på engelsk). På den anden side bruger basemappen og en stor del af de biblioteker, der bruges af udviklere, præfikset My.
Navnet på MySQL- logoet ( delfinen ) Sakila blev valgt af skaberne af MySQL på baggrund af en konkurrence. Det blev indsendt af Ambrose Twebaze, udvikler fra Swaziland . Ifølge Ambrose har navnet Sakila sin oprindelse i Siswati , det lokale sprog i Swaziland .
Den første version af MySQL dukkede op 23. maj 1995. Det blev først oprettet til personlig brug fra mSQL baseret på det lave ISAM-sprog, som de Fundet for langsomt og for stift. De oprettede en ny SQL- grænseflade, der holder den samme API som mSQL.
MySQL er under GPL-licens fra version 3.23.19 (Juni 2000)
I 2003 indgik MySQL AB og SAP AG en aftale. Resultatet kaldes MaxDB . Det er resultatet af integrationen af SAP-systemet (SAP DB) i MySQL.
Det 20. april 2009, Annoncerer Oracle Corporation at købe Sun Microsystems for 7,4 milliarder dollars, hvilket skaber frygt for at se MySQL forsvinde - eller i det mindste ikke længere udvikles - til fordel for Oracle , DBMS fra Oracle Corporation. MySQL er dog langt fra at have al Oracle-funktionalitet og kunne derfor betragtes af virksomheden tværtimod som et gratis produkt, der bagatelliserer brugen af SQL og derfor forbereder sit fremtidige salg.
En af specifikationerne ved MySQL er at kunne styre flere motorer inden for en enkelt database. Hver tabel kan bruge en anden motor i en database. Dette er for at optimere brugen af hver tabel.
Her er de forskellige historiske motorer i MySQL:
Open source-lagringsmotorer:
Kommercielle lagermotorer:
Brugervenligheden af flere lagermotorer i en enkelt database med MySQL giver enorm fleksibilitet i optimeringen af databasen: Vi bruger MyISAM til at gemme data, der ikke er særlig følsomme og kræver hurtig adgang til dataene (for eksempel en liste over ' brugere), InnoDB for avancerede funktioner og mere følsomme data (for eksempel for en liste over banktransaktioner), MEMORY for data, der kan gå tabt, når maskinen genstartes og ofte ændres (for eksempel en liste over brugere i linjen), ARKIV for en historie (eller log), der kræver lidt læsning ...
Der findes to metoder til at distribuere belastningen på et sæt maskiner, der kører under MySQL Server. Disse metoder gør det muligt at sikre redundans (hvis en maskine går i stykker, kan andre overtage), forbedre søgningshastigheden (SELECT) eller endda etablere en maskine dedikeret til lagring af data.
MySQL er i stand til siden version 3.23.15 at bruge et envejs-replikationssystem, der er relativt let at opsætte: en masterserver, der indeholder kildedatabasen og vil modtage alle ændringer, og en slaveserver, der indeholder en database med en identisk struktur, og som vil oprette forbindelse til masterserveren for at hente nye ændringer og opdatere dens databaser. En mester kan have flere slaver, og en slave kan igen blive en mester for en anden slaveserver og derved opnå en replikeringskæde.
Alle ændringer (UPDATE, DELETE, INSERT ...) skal sendes til masterserveren og reflekteres automatisk på dens slaver, men søgeanmodningerne (SELECT), ofte mere talrige og mere ressourceintensive, kan udføres på en eller flere slaver. Da modifikationsanmodningerne skal omdirigeres til masterserveren, skal applikationens design tilpasse sig arkitekturen: programmøren åbner to forbindelser i sit program, en på masterserveren, hvorpå han vil udføre alle sine ændringer og en på slave-serveren, hvor den kører alle sine søgninger.
Dette system tillader dog kun begrænset redundans:
I de fleste tilfælde vil det tage administrator handling for at gendanne ordren, og applikationen holder op med at arbejde i løbet af denne periode. Interessen for denne løsning vises derefter i styringen af sikkerhedskopierne, fordi applikationen kun bruger master-serveren, og den stoppes ikke, hvis slave-backup-serveren fejler, men en sikkerhedskopi af databasen vil være tilgængelig i tilfælde af, at masterserver går ned.
Hvis du vil tilføje en node, skal du placere den i slutningen af kæden som en slave og ændre applikationen for at administrere denne nye node.
Fra MySQL's synspunkt styres hver node uafhængigt, så det er op til programmøren at styre belastningsbalancering.
Interfacet "memcached" er en udvidelse til MySQL siden version 5.6 i form af en resident service, der kører på serveren, og som muliggør, at data, der er gemt af InnoDB- motoren, caches i hukommelsen . Fordelen er en præstationsforøgelse (dataene er i hukommelsescache) og muligheden for at få adgang til og ændre data via en NoSQL-stilgrænseflade (adgang til data ved hjælp af en stil-syntaks @@get key), hvilket gør det muligt at undgå tidspunktet for fortolkning af forespørgsel ved forespørgselsparseren.
MySQL er i stand til siden version 4.1 og takket være NDB- lagringsmotoren at styre en komplet serverklynge. Dens struktur er baseret på duplikering af data, det vil sige at hver node vil være en del af en gruppe noder, som alle vil eje hele databasen.
En protokol, der er oprettet i hver node, tager sig af adresseringen af hver transaktion til de forskellige noder, der er berørt i klyngen, der kræves mindst to maskiner for at etablere en MySQL- klyngeløsning og en maskine (som selv kan integrere en server MySQL), som kan rollen som load balancer ved at omdirigere anmodninger til de tilgængelige og mindst optagne noder.
Søgeanmodninger (SELECT) vil være hurtigere, men når data ændres (f.eks. En UPDATE-, DELETE- eller INSERT-anmodning), udføres de på alle knudepunkter, som blokerer hele klyngen under denne operation.
Sammenlignet med et replikationssystem forbedres redundans: hvis en node fejler, overtages dens belastning automatisk af de andre noder.
Tilføjelse af en ny knude kan ske uden behov for at ompartitionere databasen, det er tilstrækkeligt at have den genkendt af klyngen, og genstart af en knude kan gøres uden at genstarte klyngen.
Fra MySQL's synspunkt er hver node en del af et sæt, der kunne genkendes som en enkelt maskine. For programmøren skal han programmere sin applikation til at kommunikere med load balancer.
Denne løsning er ideel, når tilgængeligheden og sikkerheden af data er et kritisk problem, og når der kræves teknisk partitionering til skrivning. Kombineret med realtidsfunktioner og en asynkron programmering API NDB Cluster adresserer hovedsageligt kravene til telekommunikationsmarkedet.