CodeGym/Kursy Java/All lectures for PL purposes/Zaawansowana znajomość baz danych

Zaawansowana znajomość baz danych

Dostępny

1.1 Zasada konstrukcji wykładów

Ty i ja zaczęliśmy naszą znajomość z bazami danych od dołu . Jest to cecha mojego osobistego podejścia do nauczania ludzi. Mówiąc o nowych tematach, zawsze najpierw mówię, jak zastosować określone narzędzia w praktyce. I już kiedy wiem, że dana osoba umie się nimi posługiwać, zaczynam opowiadać, jak to wszystko działa.

Istnieje kilka powodów takiego podejścia, ale głównym z nich jest to, że najcenniejszym i najbardziej brakującym zasobem w procesie uczenia się jest motywacja uczniów .

Podejście to różni się nieco od tego, do którego jesteśmy przyzwyczajeni, które jest stosowane w szkołach i na uczelniach. Ale wszystko jest jasne: kiedy uczysz się w szkole lub na uniwersytecie, masz odpowiednie priorytety: nauka jest w tej chwili najważniejsza w życiu.

Jeśli zajmujesz się samokształceniem w wieku dorosłym, to często już musisz łączyć naukę z pracą, obowiązkami domowymi, opieką nad dziećmi czy starszymi rodzicami. I tutaj często nauka nie będzie priorytetem.

Wszystko zależy od priorytetów. W świecie startupów istnieje nawet taka koncepcja – Fail Fast, fail tak szybko, jak to możliwe . Brzmi to dziwnie, ale w rzeczywistości ma to duży sens: zadaniem startupu jest szybkie sprawdzenie, czy jego hipoteza jest poprawna. A jeśli to nieprawda, to nie trzeba poświęcać na to lat życia, lepiej jak najwcześniej zrozumieć, że nie ma popytu na określoną usługę lub produkt.

Ucząc Javy i SQL stosuję to samo podejście: daję Ci możliwość jak najwcześniejszego zrozumienia, czy nie spieszysz się z programowaniem . Jeśli lubisz programować i sam byłeś w stanie rozgryźć, jak pracować z pętlami i tablicami, to z pomocą mentorów i dobrze zaprojektowanego programu masz wszelkie szanse na ukończenie studiów i znalezienie pracy.

Ale nie mniej ważny jest inny fakt: za kilka dni wolnego możesz zrozumieć, że programowanie nie jest dla ciebie. Możesz po prostu nie być tym zainteresowany i to jest w porządku . Nie musisz więc poświęcać na to miesięcy swojego życia.

Tylko 40% absolwentów pracuje w specjalności, którą otrzymali na uczelni. Pomyśl o tym, ludzie studiowali przez 5-6 lat, a 60% z nich zdecydowało się nie pracować w swojej specjalności. Tak, część zdobytej wiedzy jest nadal wykorzystywana, ale mniej więcej połowa nie.

Na tym polega wartość koncepcji Fail Fast - jak najwcześniejsze zrozumienie, że określony zawód, określona osoba lub określone hobby nie są dla Ciebie odpowiednie. I nie trać na nie czasu i energii. Na dłuższą metę jest to bardzo dobra strategia.

1.2 SQL i wszystko, wszystko, wszystko

Skończyliśmy z filozoficznym wprowadzeniem, wróćmy do nauki SQL.

Język SQL i DBMS to nieco inne rzeczy. Sam język SQL jest swego rodzaju standardem opisującym, co można zapisać w zapytaniach SQL do bazy danych. DBMS to już implementacje tego standardu. Niektóre DBMS implementują niektóre funkcje standardu, inne inne i tak dalej.

Im droższy DBMS, tym więcej cech standardu implementuje. Ponadto wiele systemów DBMS często implementuje własne unikalne funkcje poza standardami SQL. Czasami prowadzi to do problemów z przenośnością: zapytania SQL napisane dla jednego DBMS mogą nie działać dobrze dla innego.

Java ma również podobną sytuację. Jeśli program Java jest napisany w systemie Windows, nie będzie działał normalnie w systemie Linux. Aby rozwiązać ten problem, Java wprowadza specjalne klasy, które mają różne implementacje dla różnych systemów operacyjnych. Przykład: klasa Path, która ma implementacje WindowsPath, LinuxPath itp.

Druga część problemu jest rozwiązywana za pomocą wersjonowania. Wszystkie udane innowacje z różnych języków lub DBMS są dodawane do nowego standardu JDK lub SQL. Wiesz już, że istnieją różne wersje JDK, a im nowsza wersja, tym więcej posiada funkcji. Tak samo jest z SQLem.

W języku SQL istnieje kilka wersji jego standardu, które są nazwane według roku:

  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2011
  • SQL:2016
  • SQL:2019

Dobra wiadomość : nie będziemy studiować tych standardów. Po pierwsze, nauka i opanowanie tego wszystkiego zajmie lata. Po drugie, te standardy są jak wersje Androida: zaledwie 5-10 lat po wydaniu standard staje się masowo rozpowszechniony.

W bazach danych zawierających duże ilości danych ludzie potrzebują niezawodności i stabilności. „To działa, nie dotykaj tego” to motto każdego, kto pracuje z bazami danych. A przejście na nową wersję baz odbywa się co 5 lat, kiedy wszystkie zalety takiego rozwiązania są już oczywiste.

1.3 Poza nawiasami

Jak powiedziałem powyżej, potrzeba lat, aby zostać profesjonalistą w zakresie baz danych. Profesjonalista wie wiele rzeczy, których nie będziemy studiować. Ale powiem trochę o tym, co jeszcze jest w bazach danych.

Prawie wszystkie nowoczesne bazy danych obsługują:

1 język proceduralny (PL)

RDBMS obsługują możliwość pisania procedur i funkcji, które działają na SQL Server i mogą robić wiele rzeczy z danymi podczas zapytań. Na przykład kiedyś napisałem zapytania PL SQL do serwera Oracle, który w odpowiedzi na zapytanie wygenerował… stronę HTML z danymi. Tak, możesz.

2 zdarzenia (wyzwalacze)

Wszystkie współczesne DBMS obsługują mechanizm zdarzeń, które w języku SQL nazywane są wyzwalaczami. Wyzwalacz pojawia się jako odpowiedź na jakąś akcję. Można np. przechwycić wszystkie próby zapisu do bazy danych i dodać dokładny czas ich zmiany do nowych wierszy.

3 Logowanie

Nowoczesne bazy danych starają się być superszybkie, dlatego często wszystkie zmiany (nowe wiersze, usunięte wiersze, zmienione wiersze) są najpierw zapisywane w specjalnym pliku zwanym dziennikiem. I dopiero po pewnym czasie serwer SQL połączy te rekordy z główną bazą danych.

Pod pewnymi względami jest to podobne do zachowania Garbage Collectora w Javie: po prostu oznacza najpierw obiekty jako usunięte, aw czasie bezczynności przeprowadza czyszczenie i optymalizację pamięci.

4 wtyczki

Do DBMS, jak i do wielu programów, można pisać własne wtyczki. Takie wtyczki pozwalają dodawać unikalne typy danych, funkcje do pracy z nimi lub zmieniać standardowe zachowanie DBMS. Jest to szczególnie przydatne, gdy pracujesz z bazą danych typu open source i występują pewne błędy.

5 Praca rozproszona (klastry)

Typowym scenariuszem dla nowoczesnego serwera SQL jest klaster kilku serwerów. Najprostszą opcją jest zapisywanie danych na jednym serwerze i odczytywanie ich z grupy serwerów. W takim przypadku można skonfigurować różne scenariusze synchronizacji bazy danych między serwerami SQL.

6 Odłamki

Gdy danych jest dużo, zaczynają być one dzielone na różne bazy danych. Aż do tego, że jedna tabela może być przechowywana w częściach w różnych bazach danych.

Sharding może być pionowy i poziomy. Pionowe sharding oznacza, że ​​stół jest niejako cięty pionowymi liniami, podczas gdy sharding poziomy jest cięty na poziome.

Na przykład zdecydowaliśmy się podzielić wszystkie dane w tabeli na lata: dla 2019 r. - jedna tabela, dla danych z 2020 r. - druga i tak dalej. Będzie to sharding poziomy.

7 shove bez shove

Na pewnym etapie rozwoju baz danych zaczęto dodawać do nich coraz więcej logiki biznesowej. Wszystko zaczęło się od procedur, funkcji, generowania stron internetowych przez serwery, a skończyło na dodaniu do DBMS obsługi prawie wszystkich popularnych języków: Python, JavaScript, a nawet Java i C++.

Brzmi fajnie, dopóki nie przejdziesz do szczegółów: czy naprawdę chcesz napisać logikę biznesową aplikacji internetowej w Javie, która będzie wykonywana na serwerze SQL, gdzie nie ma JDK, bibliotek Java, frameworków, mało pamięci i dużo inne ograniczenia?

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy