A database is an abstraction over anoperating system’s file system that makesit easier for developers to build applications that create, read, updateand delete persistent data.
- Why are databases necessary?
- Relacyjne bazy danych
- Najczęściej spotykane bazy danych dla aplikacji internetowych Pythona
- Baza danych PostgreSQL
- Baza danych MySQL
- Połączenie z bazą danych w Pythonie
- Object-relational Mapping
- Usługi strony trzeciej w zakresie baz danych
- ZasobySQL
- Ogólne zasoby baz danych
- Lista kontrolna do nauki baz danych
Why are databases necessary?
At a high level web applications store data and present it to users in auseful way. Na przykład, Google przechowuje dane o drogach i dostarcza wskazówek, jak dotrzeć z jednego miejsca do drugiego za pomocą aplikacji Mapy. Wskazówki dotyczące jazdy są możliwe, ponieważ dane są przechowywane w ustrukturyzowanym formacie.
Bazy danych sprawiają, że uporządkowane przechowywanie jest niezawodne i szybkie. Dają one również ogólne ramy dla tego, jak dane powinny być zapisywane i pobierane, zamiast wymyślać, co zrobić z danymi za każdym razem, gdy budujesz nową aplikację.
Relacyjne bazy danych
Abstrakcja przechowywania danych najczęściej używana w Pythonie do tworzenia stron internetowych to zestawy tabel relacyjnych. Alternatywne abstrakcje przechowywania danych są wyjaśnione na stronie NoSQL.
Relacyjne bazy danych przechowują dane w serii tabel. Połączenia między tabelami są określane jako klucze obce. Klucz obcy jest unikalnym odniesieniem z jednego wiersza w tabeli relacyjnej do innego wiersza w tabeli, która może być tą samą tabelą, ale najczęściej jest inną tabelą.
Wdrożenia baz danych różnią się złożonością. SQLite, baza danych dołączona do Pythona, tworzy jeden plik dla wszystkich danych na bazę danych.Inne bazy danych, takie jak PostgreSQL, MySQL, Oracle i Microsoft SQL Server mają bardziej skomplikowane schematy przechowywania danych, oferując jednocześnie dodatkowe zaawansowane funkcje, które są przydatne do przechowywania danych aplikacji internetowych. Te zaawansowane funkcje obejmują, ale nie są ograniczone do:
- replikacja danych między główną bazą danych a jedną lub więcej podrzędnymi instancjami tylko do odczytu
- zaawansowane typy kolumn, które mogą efektywnie przechowywać półstrukturalne dane, takie jak JavaScript Object Notation (JSON)
- sharding, który pozwala na poziome skalowanie wielu baz danych, z których każda służy jako instancja zapisu i odczytu kosztem opóźnień w spójności danych
- monitorowanie, statystyki i inne użyteczne informacje runtime dla schematów baz danych i tabel
Typowo aplikacje internetowe zaczynają się od pojedynczej instancji bazy danych takiej jak PostgreSQL z prostym schematem. Z czasem schemat bazy danych ewoluuje do bardziej złożonej struktury przy użyciu migracji schematu, a zaawansowane funkcje, takie jak replikacja, sharding i monitorowanie stają się bardziej użyteczne, gdy wykorzystanie bazy danych wzrasta w oparciu o potrzeby użytkowników aplikacji.
Najczęściej spotykane bazy danych dla aplikacji internetowych Pythona
PostgreSQL i MySQL to dwie najpopularniejsze otwarte bazy danych do przechowywania danych aplikacji internetowych Pythona.
SQLite to baza danych, która jest przechowywana w pojedynczym pliku na dysku. SQLite jest wbudowany w Pythona, ale jest zbudowany tylko dla dostępu przez jedno połączenie w tym samym czasie. Z tego powodu nie zaleca się uruchamiania aplikacji webowych z SQLite.
Baza danych PostgreSQL
PostgreSQL jest zalecaną relacyjną bazą danych do pracy z aplikacjami webowymi Pythona. Zestaw funkcji PostgreSQL, jego aktywny rozwój i stabilność sprawiają, że jest on używany jako zaplecze dla milionów aplikacji działających obecnie w sieci.
Dowiedz się więcej o używaniu PostgreSQL w Pythonie na stroniePostgreSQL.
Baza danych MySQL
MySQL to kolejna baza danych typu open source dla aplikacji Pythona. MySQL jest nieco łatwiejszy do opanowania niż PostgreSQL, ale nie jest tak bogaty w funkcje.
Dowiedz się więcej o aplikacjach Pythona z bazą danych MySQL na stronie poświęconej MySQL.
Połączenie z bazą danych w Pythonie
Aby pracować z relacyjną bazą danych w Pythonie, musisz użyć biblioteki kodowej. Najpopularniejsze biblioteki dla relacyjnych baz danych to:
-
psycopg2(kod źródłowy)dla PostgreSQL.
-
MySQLdb(kod źródłowy)dla MySQL. Zauważ, że rozwój tego sterownika jest w większości zamrożony, więc rozważenie alternatywnych sterowników jest rozsądne, jeśli używasz MySQL jako backendu.
-
cx_Oracle forOracle Database (kod źródłowy).Oracle przeniósł kod źródłowy sterownika z SourceForge do GitHub w 2017 roku.
Obsługa SQLite jest wbudowana w Pythona 2.7+ i dlatego osobna biblioteka nie jest konieczna. Wystarczy „import sqlite3”, aby rozpocząć współpracę z bazą danych opartą na pojedynczych plikach.
Object-relational Mapping
Object-relational mapping (ORMs) pozwala programistom na dostęp do danych z poziomu backendu poprzez pisanie kodu Pythona zamiast zapytań SQL. Każdy framework webaplikacji radzi sobie z integracją ORMów inaczej. Istnieje cała strona na temat mapowania obiektowo-relacyjnego (ORM), którą powinieneś przeczytać, aby zorientować się w tym temacie.
Usługi strony trzeciej w zakresie baz danych
Liczne firmy prowadzą skalowalne serwery baz danych jako usługi hostowane.Hostowane bazy danych często zapewniają zautomatyzowane tworzenie kopii zapasowych i odzyskiwanie danych, zaostrzone konfiguracje zabezpieczeń i łatwe skalowanie pionowe, w zależności od dostawcy.
-
Usługa Relational Database Service (RDS) firmy Amazon zapewnia wstępnie skonfigurowane instancje MySQL i PostgreSQL. Instancje te mogą być skalowane do większych lub mniejszych konfiguracji w zależności od potrzeb w zakresie pamięci masowej i wydajności.
-
Google Cloud SQL to usługa obejmująca zarządzane, archiwizowane, replikowane i automatycznie aktualizowane instancje MySQL. CloudSQL integruje się z silnikiem Google App Engine, ale może być również używany niezależnie.
-
BitCan oferuje zarówno bazy danych MySQL, jak i MongoDB z rozbudowanymi usługami tworzenia kopii zapasowych.
-
ElephantSQL to firma oferująca oprogramowanie w formie usługi, która hostuje bazy danych PostgreSQL i zajmuje się konfiguracją serwerów, tworzeniem kopii zapasowych i połączeniami danych na instancjach Amazon Web Services.
ZasobySQL
Możesz planować użycie mapera obiektowo-relacyjnego (ORM) jako głównego sposobu interakcji z bazą danych, ale nadal powinieneś nauczyć się podstaw SQL, aby tworzyć schematy i rozumieć kod SQL generowany przez ORM. Poniższe zasoby mogą pomóc w opanowaniu SQL, jeśli nigdy wcześniej go nie używałeś.
-
Select Star SQL to interaktywna książka do nauki SQL. Bardzo zalecana, nawet jeśli uważasz, że będziesz pracował tylko z obiektowo-relacyjnym mapperonem w swoich projektach, ponieważ nigdy nie wiadomo, kiedy będziesz musiał przejść do SQL, aby poprawić powolną wydajność wygenerowanego zapytania.
-
Przewodnik po SQL dla początkujących dobrze wyjaśnia główne słowa kluczowe używane w instrukcjach SQL, takie jak
SELECT
,WHERE
,FROM
,UPDATE
iDELETE
. -
Samouczek SQL uczy podstaw języka SQL, który może być używany we wszystkich głównych implementacjach relacyjnych baz danych.
-
Życie zapytania SQLWyjaśnia, co dzieje się zarówno koncepcyjnie, jak i technicznie w bazie danych, gdy zapytanie SQL jest uruchamiane. Autor używaPostgreSQL jako przykładowej bazy danych i składni SQL w całym poście.
-
Prawdopodobnie niekompletny, wyczerpujący przewodnik po wielu różnych sposobach łączenia tabel w SQL omawia jedną z najtrudniejszych części pisania instrukcji SQL, które łączą jedną lub więcej tabel:
JOIN
. -
Pisanie lepszego SQL to krótki przewodnik po stylizacji kodu, dzięki któremu Twoje zapytania staną się bardziej czytelne.
-
Poziom średniozaawansowanySQL to samouczek wykraczający poza podstawy, w którym wykorzystano otwarte dane amerykańskiego biura Consumer Financial Protection Bureau jako przykłady liczenia, odpytywania i używania widoków w PostgreSQL.
Ogólne zasoby baz danych
-
Jak działa relacyjna baza danych? to szczegółowy, długi post na temat sortowania, wyszukiwania, łączenia i innych operacji, które często uznajemy za oczywiste, gdy korzystamy z relacyjnej bazy danych, takiej jak PostgreSQL.
-
Bazy danych 101 daje doskonały przegląd głównych koncepcji relacyjnych baz danych, który jest odpowiedni nawet dla osób niebędących programistami jako wprowadzenie.
-
Pięć błędów popełnianych przez początkujących podczas pracy z bazami danych wyjaśnia, dlaczego nie należy przechowywać obrazów w bazach danych, jak również dlaczego należy być ostrożnym przy normalizacji schematu.
-
DB-Engines szereguje najbardziej popularne systemy zarządzania bazami danych.
-
DB Weekly to cotygodniowy przegląd ogólnych artykułów i zasobów dotyczących baz danych.
-
Designing Highly Scalable Database Architecturescovers horizontal and vertical scaling, replication and caching inrelational database architectures.
-
Online migrations at scaleis a great read on breaking down the complexity of a database schemamigration for an operational database. Podejście, którego użył zespół autora, to 4-etapowy schemat podwójnego zapisu, który starannie ewoluował sposób przechowywania danych subskrypcji, aby można było przejść do nowego, bardziej wydajnego modelu przechowywania.
-
Jeden rozmiar pasuje do wszystkich baz danych nie pasuje do nikogoWyjaśnia specyficzne przesłanki Amazon Web Services do posiadania tak wielu typów relacyjnych i nierelacyjnych baz danych na swojej platformie, ale artykuł jest również dobrym przeglądem różnych modeli baz danych i ich przypadków użycia.
-
SQL ma 43 lata – oto 8 powodów, dla których wciąż go używamy Lista powodów, dla których SQL jest powszechnie używany przez prawie wszystkich programistów, nawet gdy język ten zbliża się do pięćdziesiątej rocznicy.
-
Szerzej o kluczach w bazie danychDoskonale wyjaśnia, czym są klucze podstawowe i jak należy z nich korzystać.
-
Poznanie zbioru danych w języku SQL jest dobrym przykładem tego, jak sam język SQL może być wykorzystywany do analizy danych. Ten samouczek wykorzystuje dane Spotify, aby pokazać, jak wydobyć to, czego chcesz się nauczyć z zestawu danych.
-
Strategie testowania integracji baz danychOdkrywa trudny temat, który pojawia się w każdym prawdziwym projekcie.
-
GitLab udostępnił swój postmortem przestoju bazy danych 31 stycznia jako sposób na bycie przejrzystym dla klientów i pomoc innym zespołom deweloperskim w dowiedzeniu się, jak spieprzyli swoje systemy baz danych, a następnie znaleźli sposób na ich odzyskanie.
-
Asynchroniczny Python i bazy danych to dogłębny artykuł opisujący, dlaczego wiele sterowników baz danych Pythona nie może być używanych bez modyfikacji z powodu różnic w modelach zdarzeń blokujących i asynchronicznych. Zdecydowanie warto przeczytać, jeśli używaszWebSockets za pośrednictwem Tornado lub gevent.
-
PostgreSQL vs. MS SQL Server to jeden z poglądów analityka danych na różnice między tymi dwoma serwerami baz danych.
Lista kontrolna do nauki baz danych
-
Zainstaluj PostgreSQL na swoim serwerze. Zakładając, że wybrałeś Ubuntu run
sudo apt-get install postgresql
. -
Upewnij się, że biblioteka psycopg2 znajduje się w zależnościach Twojej aplikacji.
-
Skonfiguruj swoją aplikację internetową tak, aby łączyła się z instancją PostgreSQL.
-
Twórz modele w ORM, albo za pomocą wbudowanego ORM w Django, alboSQLAlchemy z Flaskiem.
-
Zbuduj tabele w bazie danych lub zsynchronizuj modele ORM z instancją PostgreSQL, jeśli używasz ORM.
-
Zacznij tworzyć, odczytywać, aktualizować i usuwać dane w bazie danych z poziomu aplikacji internetowej.
.