Bazy danych SQL vs. MongoDB

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ม.ค. 2020
  • Dlaczego SQL jest jak pizza, a noSQL to spaghetti, kebab, burger i przysmaki kuchni meksykańskiej.
    💥Pobierz darmowego ebooka "Jak zostać programistą - krok po kroku": www.jaknauczycsieprogramowani...
    🔥Subskrybuj kanał: th-cam.com/users/jaknauczycsie...
    📘Grupa na Facebooku: / 693124164480151
    ✉️Mail: kamil.brzezinski@gmail.com

ความคิดเห็น • 54

  • @TheJezus1997
    @TheJezus1997 4 ปีที่แล้ว +20

    Taka poprawka bo na inzynierce ktoś może za to uwalić - relacyjne bazy danych nazywają się relacyjnymi że względu na tabelaryczny układ danych - relacja to formalna nazwa tabeli. Relacja pod znaczeniem związków między encjami nie ma tutaj nic do rzeczy, ale poza tym jak zawsze świetny odcinek ;)

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +11

      Ooo człowiek naprawdę uczy się przez całe życie :) Przyznam, że nie miałem o tym pojęcia, dzięki za tę informację! Zawsze zakładalem, że to relacje pomiędzy rekordami/tabelami odpowiadają za tę nazwę, a tu takie zaskoczenie.
      Sprawdziłem jak to wygląda w języku angielskim i tam też tabele nazywami relacjami - relations. I w języku angielskim angielskim jest to łatwiej rozróżnić - relację jako tabelę nazywamy relation, a relację pomiędzy rekordami nazywamy relationship. W języku polskim oba pojęcia opisywane są tym samym słowem "relacja".

    • @TheJezus1997
      @TheJezus1997 4 ปีที่แล้ว +4

      Jak nauczyć się programowania dokładnie, niestety często takie problemy w tłumaczeniu wychodzą

    • @e_d_d_y
      @e_d_d_y 4 ปีที่แล้ว +3

      @@JakNauczycSieProgramowania polecałbym wrzucić adnotację co do tego wątku, tak żeby nie było niedomówień ;)

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +2

      @@e_d_d_y Adnotacji do filmu już się nie da niestety dorzucać, ale przypnę ten komentarz :)

    • @tomaszgalicki3139
      @tomaszgalicki3139 3 ปีที่แล้ว +2

      @@JakNauczycSieProgramowania właściwie relacją powinno się określać tabelę wg żargonu, natomiast wszelkie "relacje" między tabelami powinno określać się powiązaniem między tabelami ale od lat to rozróżnienie się zatraciło, w wielu źródłach przyjmują, że "relacja" to właśnie to powiązanie.

  • @monikaeducation6378
    @monikaeducation6378 7 หลายเดือนก่อน

    Super wyjaśnienie baz danych. Dzięki 🤝💎

  • @happener
    @happener 4 ปีที่แล้ว +2

    Cześć, dzięki za film i wyjaśnienie tematu Baz Danych. Rysunki zdecydowanie pomocne w zrozumieniu.
    Może mógłbyś poruszyć temat aktualnych i starszych technologii. Na różnych kanałach różne osoby się wypowiadają, żeby czegoś już się nie uczyć bo są nowsze technologie, itp. Z kolei tak patrze, że jest już np JAVA 13, a w wielu ogłoszeniach pracy wymagają znajomości JAVA 8. To czy jest to aż takie istotne czy np będę robił kurs sprzed dajmy na to 3 - 4 lat, domyślam się że pewnie są jakieś ułatwienia, uproszczenia, może jakieś nowe możliwości itp bo pewnie to jest głównym powodem nowszych wersji. Ale czy na początek jest aż tak istotne, aktualność technologii, czy czegoś nie będę potrafił zrobić czy po prostu może będę to potrafił zrobić starszym sposobem? Pozdrawiam

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      Cześć, jeżeli chodzi o ten konkretny przykład z Javą, to obecność Javy 8 w ogłoszeniach wynika z tego, że była to najbardziej przełomowa wersja Javy od lat, która wprowadziła do języka zupełnie nowe elementy języka, takie jak streamy i lambdy. Kolejne wersje Javy to już konsekwentna, ale dość spokojna ewolucja. Dla osoby zaczynającej przygodę z programowaniem to, co pojawiło się od Javy 9 nie jest już tak istotne, jeżeli będziesz robił kurs oparty na Javie 8 to możesz to traktować jako aktualny kurs :) Najwyżej później doczytasz co jeszcze doszło w kolejnych wersjach Javy.
      Mam w planach odcinek, w którym opowiem o całym przekroju różnych technologii, ale zrobienie tego dobrze wymaga sporo czasu, także zajmie to jeszcze kilka tygodni :)

  • @nieinformatyk
    @nieinformatyk 4 ปีที่แล้ว +2

    Cześć :)
    Fajny odcinek, przyjemnie się oglądało. Jedna mała uwaga, by nie wprowadzić kogoś w błąd.
    10:06 Baza relacyjna to rzeczywiście nazwa pochodząca od słowa relacja, ale oznacza ono tabelę. "Relacja między tabelami" to powiązanie.
    11:09 Na slajdzie też możesz zmienić słowo relacja na powiązanie.
    Potem ten sam błąd pojawił się jeszcze raz, gdzieś pod koniec.
    pl.wikipedia.org/wiki/Model_relacyjny
    Mam też jedno pytanie. Dlaczego uważasz, że instalacja bazy relacyjnej w klastrze to problem? Moim zdaniem synchronizacja kilku serwerów zawsze jest problematyczna i wynika z synchronizacji danych a nie tego czy dane są przechowywane w bazie sql czy nosql. W Oracle jest narzędzie o nazwie Real Application Cluster i z tego co mi wiadomo, to działa bardzo sprawnie.
    Pozdrawiam, Darek Butkiewicz

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      Cześć Darek, dzięki za opinię!
      Jeżeli chodzi o nazwę, to już jeden z widzów zwrócił na to uwagę, przypiąłem wtedy ten komentarz, ale warto przypomnieć o tym jeszcze raz :) Dla mnie to była nowa informacja, pomimo, że korzystam z baz SQLowych od kilkunastu lat nie wiedziałem, że tabela inaczej zwana jest relacją ; )
      W temacie stawiania baz danych w klastrze moja wiedza jest bardzo mocno teoretyczna, bo nigdy też nie miałem okazji pracować przy projekcie, gdzie tego typu rozwiązanie byłoby konieczne. W mojej poprzedniej pracy w jednym z projektów obsługiwaliśmy ogromne ilości danych, ale wciąż nie były to wartości, które wymusiłyby na nas taką architekturę.
      To co wydaje mi się sporym ograniczeniem w przypadku baz relacyjnych to właśnie relacje oraz transakcje - jeżeli musimy wykonać operację na danych znajdujących się w kilku tabelach, na kilku różnych serwerach, a jednocześnie chcemy zachować integralność tych danych w przypadku, gdyby coś poszło nie tak, brzmi to jak całkiem spore wyzwanie.
      Ale tak jak mówię, jestem przede wszystkim użytkownikiem baz danych i daleko mi do eksperta w tej dziedzinie, zwłaszcza, gdy w grę wchodzą rozwiązania wymagające już bardzo specyficznej wiedzy i dużo większego doświadczenia w administracji bazami. Na tym polu zdecydowanie powinienem się uczyć od Ciebie :)
      A jakie jest Twoje zdanie na temat stawiania baz relacyjnych w klastrze? Bardzo możliwe jest też, że te możliwości rozwinęły się w ostatnich latach, wiadomo, że kiedy powstawały bazy relacyjne, nikt o tym nawet nie myślał, bo pracowało się na dużo mniejszych zbiorach danych, ale wymagania przez tych kilka dekad zmieniły się bardzo mocno i twórcy relacyjnych baz również musieli na te zmienione wymagania odpowiedzieć.

    • @nieinformatyk
      @nieinformatyk 4 ปีที่แล้ว

      @@JakNauczycSieProgramowania Faktycznie, dopiero teraz zauważyłem komentarz. No nic, przynajmniej zrobiłem ruch na Twojej stronie :)
      W przypadku baz stawianych na klastrze istnieje zjawisko zwane "two-phase commit", czyli możemy decydować kiedy zmiana danej w jednej tabeli zostanie uznana za zatwierdzoną: w momencie zapisania jej w tej bazie czy dopiero wówczas, gdy zmiana zostanie przeniesiona również na inne bazy/serwery.
      W tym drugim przypadku wydłuża się czas realizacji polecenia, bo trzeba czekać na czas odpowiedzi drugiej strony. Zyskujemy jednak spójność.
      Słyszałem też o rozwiązaniach typu: zmianę z bazy X muszę przenieść na Y i Z. I jak uda nam się zmianę nanieść na bazę X i Y to nie czekamy na Z tylko uznajemy, że całe polecenie wykona się wszędzie. Jest względnie spójnie i względnie szybko.
      Zdecydowanie lepiej znam bazy sql od nosql, ale wydaje mi się, że te klastry w bazach nosql powstają dlatego, że potrzebna jest większa moc do pracy z większym zbiorem danych. Trudności w zarządzaniu tego typu architekturą wystepują jednak wszędzie - stąd w bazach relacyjnych jest model ACID a w bazach nosql BASE.
      Pozdrawiam i życzę powodzenia w rozwijaniu kanału.

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      ​@@nieinformatyk Co ciekawe MongoDB stosunkowo niedawno (1,5 roku temu), wraz z wersją 4.0, wprowadziło transakcje, a w sierpniu 2019, wraz z wersją 4.2 dodało transakcje w klastrze:
      www.mongodb.com/blog/post/multi-document-transactions-in-mongodb
      docs.mongodb.com/master/core/transactions/
      th-cam.com/video/iuj4Hh5EQvo/w-d-xo.html
      Także jest to kolejny bardzo istotny punkt w rozwoju baz danych i ciekawe jak to będzie się rozwijać dalej :)
      Również pozdrawiam i za rozwój Twojego kanału też trzymam bardzo mocno kciuki!

    • @nieinformatyk
      @nieinformatyk 4 ปีที่แล้ว

      @@JakNauczycSieProgramowania dobra lektura na poniedziałek do pracy, dzięki

  • @AnonymousDeveloper1
    @AnonymousDeveloper1 4 ปีที่แล้ว +1

    Fajny odcinek, bo można dowiedzieć się jak to jest z tymi bazami NoSQL. Do tej pory miałem przyjemność poznać tylko SQL (głównie MySQL, ale zdarzyło się pobawić SQLite, MS SQL Server, Oracle Database), ale kiedyś wypróbuję również nierelacyjne. Zasadnicze pytanie: w jakich zastosowaniach/warunkach lepiej użyć NoSQL? A może w pewnych zastosowaniach program powinien korzystać jednocześnie z dwóch baz? :D

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +1

      Przede wszystkim warto stosować taką bazę jak MongoDB w przypadku, gdy mamy do czynienia z dużym zbiorem danych, które mają różną strukturę i które raz zapisane pozostaną niezmienne. Bardzo fajną listę kilkunastu zastosowań MongoDB przedstawia w tej prezentacji Hannes Magnusson, inżynier pracujący swego czasu nad MongoDB: www.slideshare.net/mongodb/common-use-cases-hannes

  • @damian33733
    @damian33733 4 ปีที่แล้ว +2

    Genialne jest to porównanie

  • @maciejblankenburg6663
    @maciejblankenburg6663 4 ปีที่แล้ว

    by dodać kilka róznych grup dla użytkownika zamiast MondoDB użyłbym jednego pola w relacyjnej bazie danych, pola (text) i modyfikował jedno pole w rekordzie tak by po pobraniu danych można było rozszyfrować ciąg znaków w poziomu aplikacji.

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      Jasne, można też zrobić to w ten sposób, ale wymaga to wtedy dodatkowej logiki po pobraniu danych.

  • @NeoBTK
    @NeoBTK 3 ปีที่แล้ว

    Nie chcę być upierdliwy czy coś, od ok.14:27, gdy mowa o złączeniach, widzimy nazwę tabeli user_to_groups, a w zapytaniu users_to_groups, taka drobna pomyłka ;)
    A tak, to, jak zawsze, świetny filmik.

  • @mrgg416
    @mrgg416 4 ปีที่แล้ว +1

    Hej mam kolejny pomysł na odcinek. Może opowiesz o najczęściej stosowanych w branży środowiskach IDE ? Wiem że dobry programista to taki który rozumie kody i ma tym się skupia ale przydało by się też wiedzieć to.
    Mam nadzieję że pomogłem.

    • @michabb2693
      @michabb2693 4 ปีที่แล้ว +1

      Super. Od siebie dodam pomysł. Przykładowe zadania rekrutacyjne na stanowisko junior dev, które Kamil rozwiązuje udzielając wskazówek dla początkujących. Jestem tego ciekawy, jak reszta??

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +2

      Siema, o IDE za wiele powiedzieć się nie da, bo tutaj wybór nie jest zbyt duży - do Javy w zasadzie standardem jest IntelliJ (nie znam już nikogo, kto pracowałby jeszcze z Eclipsem), do JS-a większość wybiera Visual Studio Code albo WebStorm od JetBrains, Python to też albo Visual Studio Code albo PyCharm. Ale chcę za to zrobić odcinek o narzędziach, których używam na co dzień i które bardzo przydają się w pracy programisty. W tym temacie jest zdecydowanie więcej do opowiedzenia :)
      Jeżeli chodzi o zadania rekrutacyjne na stanowisko Junior Dev to też w tym temacie rodzą się pewne pomysły i pracuję nad nimi, więcej szczegółów zdradzę za jakieś 3-4 miesiące :)

    • @mrgg416
      @mrgg416 4 ปีที่แล้ว +1

      @@JakNauczycSieProgramowania A jakie są dla c++?

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +1

      @@mrgg416 Ja ponad 10 lat temu używałem Dev C++, ale od tamtej pory chyba sporo się zmieniło :D Dzisiaj obstawiałbym Microsoft Visual Studio albo Visual Studio Code, ale to już programiści C++ muszą się wypowiedzieć, w czym pracuje im się najlepiej :) Także jeżeli są tutaj tacy, dajcie znać, jakie IDE jest Waszym ulubionym:)

    • @TheJezus1997
      @TheJezus1997 4 ปีที่แล้ว +1

      @@mrgg416 ​ do C++ MS Visual Studio albo CLion od JetBrains na studiach używaliśmy, ew. od biedy VSCode + jakiś gcc i g++

  • @krecik77
    @krecik77 4 ปีที่แล้ว +3

    Naprawdę musiałeś bazy danych porównywać do jedzenia? Głodny jestem !

  • @rumciur6209
    @rumciur6209 3 ปีที่แล้ว

    To chyba nie jest, aż tak trudne, którą bazę wybrać ;) Np. w serwisach typu facebook grupy do których należymy, ilość postów jakie dodajemy jest tak duża że MongoDB jest tutaj zupełnie nie praktyczne :P

    • @rumciur6209
      @rumciur6209 3 ปีที่แล้ว

      Biorąc pod uwagę oczywiście to, ze nazwa grupy może się zmienić

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  3 ปีที่แล้ว +1

      Ale to też nie jest tak zero-jedynkowe, w tak dużych serwisach jak Facebook dane są zazwyczaj umieszczone w kilku różnych bazach, w zależności od typu i przeznaczenia tych danych. Film jedynie przedstawia podstawowe różnice między SQL a MongoDB, natomiast temat jest dużo bardziej złożony, także decyzję o wyborze bazy (lub baz) podejmuje się analizując dokładnie konkretną sytuację. Ale żeby nie było też zbyt enigmatycznie - tworząc własne projekty, spokojnie można wybrać zarówno SQL jak i MongoDB, a najlepiej poeksperymentować z jedną i drugą opcją:)

  • @Mateusz-om8qf
    @Mateusz-om8qf 4 ปีที่แล้ว +3

    Jak zawsze super materiał, szanuję za marik1234 :D

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      A dziękuję :D Jest w filmie jeszcze jeden smaczek skierowany do fanów twórczości Bartosza Walaszka, zachęcam do odkrycia tej tajemnicy :D
      Jak będzie potrzeba, to mogę dać małe wskazówki ; )

    • @Mateusz-om8qf
      @Mateusz-om8qf 4 ปีที่แล้ว

      @@JakNauczycSieProgramowania Ehh potrzebujemy chyba wskazówki, film znam prawie na pamięć i nie mogę wyłapać :D

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      @@Mateusz-om8qf wiadomość kryje się w tych hasłach w tabeli users :D tylko trzeba ją odszyfrować

    • @Mateusz-om8qf
      @Mateusz-om8qf 4 ปีที่แล้ว

      @@JakNauczycSieProgramowaniaUżytkownik marik ma hasło "walaszek" a użytkownik domino88 (pewnie jachaś) ma hasło "bomba" :D Szanuję podwójnie :D

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว

      @@Mateusz-om8qf Dokładnie tak, gratulacje!
      Jeszcze jest hasło Błażeja - te dwie litery po dwójce to małe litery "L" - które po odkodowaniu daje słowo "kiedy" :D

  • @mmateuszdomanski
    @mmateuszdomanski 4 ปีที่แล้ว +2

    Widzę pewną inspirację twórczością Walaszka :)

  • @maciejolejniczak7466
    @maciejolejniczak7466 3 ปีที่แล้ว +1

    Mam ochotę na pizze :p

  • @rumciur6209
    @rumciur6209 3 ปีที่แล้ว

    Szkoda, że nie pokazałeś przykładowego 'zapytania' w bazie NoSQL :(

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  3 ปีที่แล้ว +1

      Racja, ale nadrobię to niedługo, w odcinku poświęconym w 100% MongoDB :)

    • @user-nu6eb6vk5s
      @user-nu6eb6vk5s หลายเดือนก่อน

      ​@@JakNauczycSieProgramowania będzie ten odcinek?

  • @QJUP
    @QJUP ปีที่แล้ว

    oglądam fillm o bazach danych a robie się głodny

  • @kamilkamil9409
    @kamilkamil9409 4 ปีที่แล้ว

    Jedno jest pewne, od każdej bazy danych można przytyć! Pamiętajcie, żeby czasem odejść od komputerów i się poruszać :P
    Dzięki za materiał, niebawem siadam do MongoDB ale jeszcze piszę coś na PostgreSQL.
    Ja do SQL polecam książkę z Helionu o wdzięcznej nazwie SQL- różowa okładka.

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 ปีที่แล้ว +1

      Trzeba dbać o zróżnicowaną dietę, a bazy danych spożywać w kilku małych, regularnych posiłkach :D

  • @kokeszanel9312
    @kokeszanel9312 4 ปีที่แล้ว

    ahh to MongoDB :D

  • @micha6204
    @micha6204 ปีที่แล้ว

    zgłodniałem