MySQL

MySQL Beskrivelse av Mysql-screenshot.PNG-bildet. Informasjon
Utviklet av MySQL AB , Sun Microsystems og Oracle
Første versjon 1994
Siste versjon 8.0.24 (20. april 2021)
Avansert versjon 8.0 RC1 (25. september 2017)
Innskudd MySQLGitHub
Prosjekt status I konstant utvikling
Skrevet i C og C ++
Operativsystem Linux , Microsoft Windows , macOS , FreeBSD , Solaris og Unix
Les formater MySQL Table Definition Format ( d )
Skriftlige formater MySQL Table Definition Format ( d )
Språk Engelsk
Type Relasjonelt databasesystem ( en )
Programvareserver ( d )
Distribusjonspolitikk Gratis
Tillatelse GNU General Public License versjon 2 og proprietær lisens
Nettsted www.mysql.com

MySQL (uttalt [ maj.ɛs.ky.ɛl ]) er etrelasjonelt databasestyringssystem (RDBMS). Den distribueres under en dobbel GPL og proprietær lisens. Det er en avde mest brukte databasestyringsprogramvarene i verden, både av allmennheten (hovedsakelig webapplikasjoner) og av profesjonelle, i konkurranse med Oracle , PostgreSQL og Microsoft SQL Server .

Navnet kommer fra fornavnet til datteren til medskaperen Michael Widenius , My  (sv) (uttale [ min ]). SQL refererer til Structured Query Language , spørringsspråket som brukes.

MySQL AB ble kjøpt på16. januar 2008av Sun Microsystems for 1 milliard dollar . I 2009 ble Sun Microsystems kjøpt opp av Oracle Corporation , og plasserte de to konkurrerende produktene Oracle Database og MySQL i hendene på et enkelt selskap . Denne oppkjøpet ble godkjent av EU-kommisjonen den21. januar 2010.

Siden Mai 2009, skaperen Michael Widenius opprettet MariaDB (Maria er fornavnet til sin andre datter) for å fortsette utviklingen som et åpen kildekode- prosjekt .

Kjennetegn

MySQL er en relasjonell SQL- databaseserver utviklet med tanke på høy leseytelse, noe som betyr at den er mer rettet mot å servere data som allerede er på plass enn for hyppige og svært sikre oppdateringer. Det er multi-threaded og multi-user.

Det er gratis , åpen kildekode , utviklet under en dual-lisens, avhengig av om det er fordelt med et gratis produkt eller med en proprietær produkt. I sistnevnte tilfelle belastes lisensen, ellers gjelder GNU General Public License (GPL). Programvare som integrerer MySQL-kode eller integrerer MySQL under installasjonen, må derfor være gratis eller skaffe seg en betalt lisens. Imidlertid, hvis databasen er atskilt fra proprietær programvare som bare bruker tredjeparts APIer (f.eks. I C # eller php ), er det ikke nødvendig å skaffe en betalt MySQL-lisens. Denne typen dobbel lisensiering brukes av andre produkter, for eksempel rammen for programvareutvikling Qt (for versjoner før 4.5).

Støttede operativsystemer

MySQL kjører på mange forskjellige operativsystemer, inkludert 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 .

Databasene er tilgjengelige ved hjelp av programmeringsspråkene C , C ++ , VB , VB .NET , C # , Delphi / Kylix , Eiffel , Java , Perl , PHP , Python , Windev , Ruby og Tcl  ; en spesifikk API er tilgjengelig for hver av dem. Et ODBC- grensesnitt kalt MyODBC er også tilgjengelig. I Java kan MySQL brukes transparent med JDO- standarden .

Støttede dataspråk

MySQL støtter to dataspråk , SQL- spørringsspråket og SQL / PSM (Persistent Stored Modules), en standardisert prosessutvidelse til SQL som er inkludert i SQL: 2003-standarden. SQL / PSM, introdusert i versjon 5 av MySQL, lar deg kombinere SQL-spørsmål og prosedyreinstruksjoner (sløyfer, betingelser osv.), For å lage komplekse prosesser som er ment å lagres på databaseserveren (objektserver), for eksempel lagrede prosedyrer eller utløsere .

bruk

MySQL er en del av LAMP- kvartetten  : Linux , Apache , MySQL, PHP . Den tilhører også WAMP (Windows) og MAMP (Mac OS) -varianter .

PHP / MySQL-paret brukes mye av nettsteder og tilbys av de fleste webverter . Mer enn halvparten av nettstedene kjører på Apache , som oftest brukes i forbindelse med PHP og MySQL.

Historisk

Wikipedia brukte MySQL til slutten av 2012 ( MariaDB brukes i dag), mange selskaper inkludert Google , Yahoo! , YouTube , Adobe , Airbus , Alstom , Crédit Agricole , AFP , Reuters , BBC News , Ernst & Young , Alcatel-Lucent bruker det fortsatt.

SQL-versjon

MySQL støtter SQL2-standarden (bruk av RIGHT JOIN og LEFT JOIN ), og samsvar med denne standarden sørger for at den respekterer de tilsvarende standardiserte spørsmålene. Funksjonene til de nyeste SQL- standardene er imidlertid ikke alle implementert, og noen respekterer ikke den anbefalte syntaksen (sammenkobling for eksempel), og forhindrer interoperabilitet mellom spørsmål mellom forskjellige DBMS .

Funksjoner

To hovedmotorer er til stede i MySQL: MyISAM og InnoDB.

MyISAM, i motsetning til InnoDB , støtter ikke transaksjoner eller automatisk tabellintegritet, det er ikke ment for applikasjoner der datakonsistens er kritisk; ytelsen gjør den imidlertid egnet for applikasjoner som krever en enkel og billig database å implementere.

For brukere er phpMyAdmin et nettverktøy som ofte er tilgjengelig for å opprette, fylle ut og bruke MySQL-databaser.

Interoperabilitet

Tabellene i SQL-databaser og de i regneark kommuniserer godt i begge retninger (bare for numeriske data og strenger) ved hjelp av CSV- format . Sikkerhetskopierings- og gjenopprettingsformater eksisterer, i form av SQL-kommandoer, så vel som i XML- format .

Produksjonsbruk

Interessen for å bruke åpne verktøy har også fått noen banktjenester som Crédit Mutuel , Crédit Agricole , Crédit Lyonnais og Development Bank of Canada til å inkludere MySQL i katalogen over deres interne IT-produkter.

Valør

MySQL er arbeidet til et svensk selskap, MySQL AB, grunnlagt av David Axmark , Allan Larsson og Michael "Monty" Widenius .

Navnet MySQL kommer fra kombinasjonen av My , datter av medstifter Michael "Monty" Widenius , med akronymet SQL (ifølge dokumentasjonen for den siste versjonen på engelsk). På den annen side bruker basemappen og en stor del av bibliotekene som brukes av utviklere prefikset My.

Navnet på MySQL- logoen ( delfinen ) Sakila ble valgt av skaperne av MySQL på grunnlag av en konkurranse. Den ble sendt inn av Ambrose Twebaze, utvikler fra Swaziland . I følge Ambrose trekker navnet Sakila sin opprinnelse fra Siswati , det lokale språket i Swaziland .

Historisk

Den første versjonen av MySQL dukket opp på 23. mai 1995. Den ble først opprettet for personlig bruk fra mSQL basert på det lave nivået av ISAM-språk som de Fant for sakte og for stive. De opprettet et nytt SQL- grensesnitt som holder samme API som mSQL.

MySQL er under GPL-lisens fra versjon 3.23.19 (Juni 2000)

I 2003 inngikk MySQL AB og SAP AG en avtale. Resultatet vil bli kalt MaxDB . Det er resultatet av integrasjonen av SAP-systemet (SAP DB) i MySQL.

De 20. april 2009, Kunngjør Oracle Corporation å kjøpe Sun Microsystems for 7,4 milliarder dollar, noe som skaper frykten for å se MySQL forsvinne - eller i det minste ikke lenger utvikles - til fordel for Oracle , DBMS fra Oracle Corporation. MySQL er imidlertid langt fra å ha all Oracle-funksjonalitet, og kan derfor settes av selskapet tvert imot som et gratis produkt som bagatelliserer bruken av SQL og derfor forbereder sitt fremtidige salg.

Databasemotorer inkludert

En av spesifikasjonene til MySQL er å kunne administrere flere motorer i en enkelt database. Hver tabell kan bruke en annen motor i en database. Dette for å optimalisere bruken av hvert bord.

Her er de forskjellige historiske motorene til MySQL:

Åpen kildekode lagringsmotorer:

Kommersielle lagringsmotorer:

Brukervennligheten til flere lagringsmotorer i en enkelt database med MySQL gir enorm fleksibilitet i optimaliseringen av databasen: vi vil bruke MyISAM til å lagre data som ikke er veldig følsomme og krever rask tilgang til dataene (for eksempel en liste over ' brukere), InnoDB for avanserte funksjoner og mer sensitive data (for eksempel for en liste over banktransaksjoner), MEMORY for data som kan gå tapt når du starter maskinen på nytt og ofte endres (for eksempel en liste over brukere i linjen), ARKIV for en historie (eller logg) som krever lite lesing ...

Serverklynger

Det finnes to metoder for å distribuere belastningen på et sett med maskiner som kjører under MySQL Server. Disse metodene gjør det mulig å sikre redundans (hvis en maskin går i stykker, kan andre ta over), forbedre søkehastigheten (SELECT) eller til og med etablere en maskin dedikert til lagring av data.

Replikering

MySQL er i stand til siden versjon 3.23.15 å bruke et enveis replikeringssystem som er relativt enkelt å sette opp: en masterserver som inneholder kildedatabasen og vil motta alle endringene, og en slaveserver som inneholder en database med en identisk struktur og som vil koble seg til hovedserveren for å hente nye modifikasjoner og oppdatere databasene. En mester kan ha flere slaver, og en slave kan i sin tur bli en mester for en annen slaveserver, og dermed oppnå en replikeringskjede.

Alle modifikasjoner (OPPDATERING, SLETTING, INSERT ...) må sendes til hovedserveren og reflekteres automatisk på dens slaver, men søkeforespørslene (SELECT), ofte mer tallrike og mer ressurskrevende, kan utføres på en eller flere slaver. Ettersom modifiseringsforespørslene må omdirigeres til masterserveren, må utformingen av applikasjonen tilpasse seg arkitekturen: programmereren vil åpne to forbindelser i programmet sitt, en på masterserveren, som han vil utføre alle sine modifikasjoner på og en på slaveserveren der den vil kjøre alle sine søk.

Dette systemet tillater imidlertid bare begrenset redundans:

I de fleste tilfeller vil det ta administratorhandlinger for å gjenopprette ordren, og applikasjonen vil slutte å fungere i løpet av denne tiden. Interessen til denne løsningen vises da i administrasjonen av sikkerhetskopiene, fordi applikasjonen bare bruker hovedserveren, vil den ikke stoppes hvis slave-sikkerhetskopieringsserveren mislykkes, men en sikkerhetskopi av databasen vil være tilgjengelig i tilfelle hovedserveren går ned.

Hvis du vil legge til en node, må du plassere den på slutten av kjeden som en slave og endre applikasjonen for å administrere denne nye noden.

Fra MySQLs synspunkt administreres hver node uavhengig, så det er opp til programmereren å administrere lastbalansering.

Memcached-utvidelse som gir NoSQL tilgang til InnoDB-motordata

Grensesnittet "memcached" er en utvidelse til MySQL siden versjon 5.6 i form av en fast tjeneste som kjøres på serveren og gjør det mulig å lagre data lagret av InnoDB- motoren i minnet . Fordelen er en ytelsesgevinst (dataene ligger i minnebufferen) og muligheten for å få tilgang til og modifisere data via et NoSQL-stilgrensesnitt (tilgang til dataene ved hjelp av en stil-syntaks @@get key), noe som gjør det mulig å unngå tiden for tolkning av spørring ved søkeparseren.

MySQL Cluster

MySQL er i stand til, siden versjon 4.1, og takket være NDB- lagringsmotoren , å administrere en komplett serverklynge. Strukturen er basert på duplisering av data, det vil si at hver node vil være en del av en gruppe noder som alle vil eie hele databasen.

En protokoll satt opp i hver node tar seg av å adressere hver transaksjon til de forskjellige noder det gjelder i klyngen, minst to maskiner er nødvendig for å etablere en MySQL- klyngeløsning og en maskin (som selv kan integrere en server MySQL) som vil spille rollen som lastbalanser ved å omdirigere forespørsler til tilgjengelige og minst opptatt noder.

Søkeforespørsler (SELECT) vil være raskere, men når data blir endret (for eksempel en UPDATE-, DELETE- eller INSERT-forespørsel), vil de bli utført på alle nodene, som vil blokkere hele klyngen under denne operasjonen.

Sammenlignet med et replikeringssystem forbedres redundans: hvis en node mislykkes, blir belastningen automatisk overtatt av de andre nodene.

Å legge til en ny node kan gjøres uten å måtte ompartisjonere databasen, det er tilstrekkelig å ha den gjenkjent av klyngen, og omstarte en node kan gjøres uten å måtte starte klyngen på nytt.

Fra synspunktet til MySQL er hver node en del av et sett som kan gjenkjennes som en enkelt maskin. For programmereren må han programmere applikasjonen sin for å kommunisere med lastbalansen.

Denne løsningen er ideell når tilgjengeligheten og sikkerheten til data er et kritisk problem, og når teknisk partisjonering er nødvendig for skriving. Kombinert med sanntidsfunksjoner og en asynkron programmering API NDB Cluster adresserer hovedsakelig kravene til telekommunikasjonsmarkedet.

Merknader og referanser

  1. Endringer i MySQL 8.0.24 (2021-04-20, generell tilgjengelighet)  " ,20. april 2021
  2. MySQL 8.0 RC1 - Høydepunkter  "
  3. (no) Rangering av DB-Engines
  4. (in) Sun kjøper MySQL , blogs.mysql.com
  5. EU godkjenner Oracle-oppkjøpet av Sun , Reuters
  6. (no) Europakommisjonen godkjenner ubetinget Oracles oppkjøp av Sun , Oracle
  7. https://www.mysql.fr/products/
  8. http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_parse.cc#L869
  9. (no) http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34135 .
  10. Wikipedia forlater MySQL til fordel for MariaDB silicon.fr desember 2012
  11. (in) MySQL :: MySQL-kunder etter bransje
  12. (no) http://www.scriptol.com/programming/mysql.php
  13. http://dev.mysql.com/doc/refman/5.0/fr/join.html
  14. http://sqlpro.developpez.com/cours/sqlaz/fonctions/
  15. “  siteduzero.com/tutoriel-3-3160…  ” ( ArkivWikiwixArchive.isGoogle • Hva skal jeg gjøre? ) .
  16. “  MySQL 5.5 Manual: History of MySQL  ” .
  17. http://www.oracle.com/us/corporate/press/1904335
  18. "  Slik forbereder du deg på MySQL 5.7-oppgraderingen  " , på digitalocean.com ,2016.
  19. (in) "  Hva er nytt i MySQL 8.0? (Generelt tilgjengelig)  ” , på MySQL Server Blog ,19. april 2018(åpnet 7. september 2020 ) .
  20. Artikkel Oracle kjøper Sun for $ 7,4 milliarder dollar på O1Net.com
  21. http://dev.mysql.com/doc/refman/5.0/fr/replication-intro.html .
  22. “  NoSQL til InnoDB med Memcached  ” .
  23. http://dev.mysql.com/doc/refman/5.0/fr/mysql-cluster-overview.html

Se også

Bibliografi

Relaterte artikler

Administrasjons-, administrasjons- og designverktøy for MySQL