Bazy danych SQL vs. MongoDB

Поделиться
HTML-код
  • Опубликовано: 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ł: ruclips.net/user/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 9 месяцев назад

    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 :)

  • @damian33733
    @damian33733 4 года назад +2

    Genialne jest to porównanie

  • @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/
      ruclips.net/video/iuj4Hh5EQvo/видео.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

  • @NeoBTK
    @NeoBTK 4 года назад

    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.

  • @mmateuszdomanski
    @mmateuszdomanski 4 года назад +2

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

  • @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.

  • @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++

  • @rumciur6209
    @rumciur6209 4 года назад

    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 4 года назад

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

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 года назад +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

  • @maciejolejniczak7466
    @maciejolejniczak7466 3 года назад +1

    Mam ochotę na pizze :p

  • @krecik77
    @krecik77 4 года назад +3

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

  • @rumciur6209
    @rumciur6209 4 года назад

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

    • @JakNauczycSieProgramowania
      @JakNauczycSieProgramowania  4 года назад +1

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

    • @user-nu6eb6vk5s
      @user-nu6eb6vk5s 4 месяца назад

      ​@@JakNauczycSieProgramowania będzie ten odcinek?

  • @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

  • @QJUP
    @QJUP Год назад

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

  • @kokeszanel9312
    @kokeszanel9312 4 года назад

    ahh to MongoDB :D

  • @micha6204
    @micha6204 Год назад

    zgłodniałem