Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Witam wszystkich bardzo serdecznie!
Na wstępie chciałbym napisać parę słów o sobie. Jestem na pierwszym roku informatyki na jednej z Warszawskich uczelni. Już od pierwszego semestru zainteresowały mnie bazy danych. Chciałbym się rozwijać w tym kierunku (obrać później specjalizację typowo bazo-danową oraz szkolić się samodzielnie). Mam parę pytań odnośnie jak to wszystko wygląda 'od kuchni' itd. Proszę o wyrozumiałość ponieważ dopiero jestem początkującym w tych sprawach :) Z góry dziękuję za wszelkie odpowiedzi.

Więc zaczynamy :)

1. Jakie książki polecacie na sam start nauki? Fakt, że na studiach mam przedmioty bazodanowe ale to są wg mnie tylko same podstawy.

2. Jest dużo stanowisk dot. baz danych pytanie na czym polegają poszczególne z nich ? Np jakie obowiązki ma administrator? Czy to koleś z kubkiem kawy co nudzi się i czeka aż ktoś poprosi go żeby coś zrobił czy troche inaczej to wyglada?

3. Jak jest z popytem osób zajmujących się bazami danych?

4. Jakie są zarobki - widełki w bazach danych. Wiadomo, że pieniądze też są rzeczą ważna i ciekawi mnie ile można zarobić nie mając doświadczenia, mając np 2 lata doświadczenia a mając np 7 lat :)

5. Czy w pracy bazodanowca jest potrzebna znajomość np innych języków programowania? Np C++ czy Javy ?

Jesli mi się coś przypomni to jeszcze zapytam. Jeszcze raz dziękuję za odpowiedzi.

konto usunięte

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Ogólna uwaga. Jakiś idiota robi JS w GL... długich postów nie da się pisać.
Piotr K.:
[...]
Więc zaczynamy :)

1. Jakie książki polecacie na sam start nauki? Fakt, że na studiach mam przedmioty bazodanowe ale to są wg mnie tylko same podstawy.
Książki... Zależy od tego ile wiesz. Na początku warto poczytać o bazach
danych - teoretycznie, dowiedzieć się co jest potrzebne i jak poszczególne
bazy sobie radzą z tymi, standardowymi problemami. W zasadzie dowolna
książka z "bazy danych" w tytule. Wypożyczyć z biblioteki, przeczytać i tyle.

Mając ogólne pojęcie warto poczytać o najnowszych rozwiązaniach i
na coś się decydować. To i tak się ze 100 razy zmieni, ale w głowie zostaje.
2. Jest dużo stanowisk dot. baz danych pytanie na czym polegają poszczególne z nich ? Np jakie obowiązki ma administrator? Czy to koleś z kubkiem kawy co nudzi się i czeka aż ktoś poprosi go żeby coś zrobił czy troche inaczej to wyglada?
Stanowiska da się podzielić na dwie grupy - programista i admin.
Pierwszy pracuje na zasadzie projektu, drugi - procesu. W sensie -
programista tworzy coś - raz. Admin zajmuje się tym czymś przez
lata, ale odpowiada za sprawne działanie tego czegoś. Przy bazach
ciężko o sztywny podział, ale - dalej da się posługiwać tymi dwoma
szablonami.

Popatrz na oferty pracy - są wymagania spisane.

Bazy masz operacyjne, hurtownie danych, noSQLe - każda z grup ma
swoją specyfikę, zastosowania. Mając hurtownię - dane trzeba do niej
wprowadzić - tym zajmują się ETLowcy. Przetwarzanie danych
bezpośrednio przez bazę jest szybkie i wydajne - no, ale nie każdy lubi
programować w Cobolu na mainframe... Większość baz ma procedury
składowane, które piszą programiści... Z drugiej strony - jak jest serwer
aplikacji - bazę danych się marginalizuje. Zwykle kończy się na adminie
ogólnego rażenia. :)

Dobry admin to taki, który wygląda, że nie ma nic do roboty. Jemu
płaci się za spokój. Menadżer zwykle nie ma pojęcia co robi techniczny,
więc jak ma płacić komuś za siedzenie... :) Po pierwszej poważnej
awarii mu się prostuje. :P

Programowanie to wytwarzanie mniej lub bardziej - na akord - łatwo
rozliczać widać kiedy robi.
3. Jak jest z popytem osób zajmujących się bazami danych?
Popyt... Generalnie stanowiska administratorskie stoją gorzej od
programistycznych. Wynika to nie tylko z tego, co napisałem o
stereotypowym menadżerze... ale też z tego, że program można
napisać w Polsce a używać gdzieś indziej - w Belgii, Anglii...
Administratora zwykle chce się mieć na miejscu. To się zmienia,
więc za parę lat może być zupełnie inaczej, ale patrząc po stawkach...
Tak to +/- wygląda.
4. Jakie są zarobki - widełki w bazach danych. Wiadomo, że pieniądze też są rzeczą ważna i ciekawi mnie ile można zarobić nie mając doświadczenia, mając np 2 lata doświadczenia a mając np 7 lat :)
http://www.itconsultants.pl/projekt/4479/etl-developer...
Admin MySQL... pewnie z 5000-6000 zł za miesiąc.
Na tym poziomie abstrakcji ciężko powiedzieć o widełkach.
5. Czy w pracy bazodanowca jest potrzebna znajomość np innych języków programowania? Np C++ czy Javy ?
Potrzebna - nie, ale... sporo rzeczy staje się oczywiste...
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

W Polsce, to jest chyba bardzo mało ofert, gdzie szuka się wyłącznie bazodanowców. Owszem, poprawnie zaprojektowana baza danych, to podstawa każdej aplikacji ale zazwyczaj zajmują się tym programiści, z kolei kwestiami administracyjnymi zajmują się klasyczni administratorzy. Tak wąskie specjalizacje, to można spotkać raczej w jakichś "data center" a tych w naszym kraju, to za dużo nie jest i raczej ciężko się tam dostać. Radziłbym ci jednak rozszerzyć swoje kwalifikacje o podstawy programowania.

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Dziękuję za odpowiedź :)
Michał Z.:
Piotr K.:
2. Jest dużo stanowisk dot. baz danych pytanie na czym polegają poszczególne z nich ? Np jakie obowiązki ma administrator? Czy to koleś z kubkiem kawy co nudzi się i czeka aż ktoś poprosi go żeby coś zrobił czy troche inaczej to wyglada?
Stanowiska da się podzielić na dwie grupy - programista i admin.
Pierwszy pracuje na zasadzie projektu, drugi - procesu. W sensie -
programista tworzy coś - raz. Admin zajmuje się tym czymś przez
lata, ale odpowiada za sprawne działanie tego czegoś. Przy bazach
ciężko o sztywny podział, ale - dalej da się posługiwać tymi dwoma
szablonami.

Popatrz na oferty pracy - są wymagania spisane.

Bazy masz operacyjne, hurtownie danych, noSQLe - każda z grup ma
swoją specyfikę, zastosowania. Mając hurtownię - dane trzeba do niej
wprowadzić - tym zajmują się ETLowcy. Przetwarzanie danych
bezpośrednio przez bazę jest szybkie i wydajne - no, ale nie każdy lubi
programować w Cobolu na mainframe... Większość baz ma procedury
składowane, które piszą programiści... Z drugiej strony - jak jest serwer
aplikacji - bazę danych się marginalizuje. Zwykle kończy się na adminie
ogólnego rażenia. :)

Dobry admin to taki, który wygląda, że nie ma nic do roboty. Jemu
płaci się za spokój. Menadżer zwykle nie ma pojęcia co robi techniczny,
więc jak ma płacić komuś za siedzenie... :) Po pierwszej poważnej
awarii mu się prostuje. :P

Programowanie to wytwarzanie mniej lub bardziej - na akord - łatwo
rozliczać widać kiedy robi.

Co do punktu numer 2, w pracy programisty wydaje mi się, że więcej się dzieje.
Tworzy zawsze coś nowego i nie ma chyba takiej monotonii, prawda? Z drugiej strony administrator gdy coś się zwali musi szybko i sprawnie działać przez co daje to pracę w większym stresie...

4. Jakie są zarobki - widełki w bazach danych. Wiadomo, że pieniądze też są rzeczą ważna i ciekawi mnie ile można zarobić nie mając doświadczenia, mając np 2 lata doświadczenia a mając np 7 lat :)
http://www.itconsultants.pl/projekt/4479/etl-developer...
Admin MySQL... pewnie z 5000-6000 zł za miesiąc.
Na tym poziomie abstrakcji ciężko powiedzieć o widełkach.

A programista? Co z początkującym adminem albo programistą?
Andrzej P.:
W Polsce, to jest chyba bardzo mało ofert, gdzie szuka się wyłącznie bazodanowców. Owszem, poprawnie zaprojektowana baza danych, to podstawa każdej aplikacji ale zazwyczaj zajmują się tym programiści, z kolei kwestiami administracyjnymi zajmują się klasyczni administratorzy. Tak wąskie specjalizacje, to można spotkać raczej w jakichś "data center" a tych w naszym kraju, to za dużo nie jest i raczej ciężko się tam dostać. Radziłbym ci jednak rozszerzyć swoje kwalifikacje o podstawy programowania.

Czy ktoś potwierdzi tą tezę? Bo jakoś wierzyć mi się nie chce :)
Wg mnie chyba brakuje tutaj takich wąskich specjalistów itd. Chociaż mogę się mylić.Ten post został edytowany przez Autora dnia 04.06.15 o godzinie 15:54

konto usunięte

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Piotr K.:
Dziękuję za odpowiedź :)

Co do punktu numer 2, w pracy programisty wydaje mi się, że więcej się dzieje.
Tworzy zawsze coś nowego i nie ma chyba takiej monotonii, prawda? Z drugiej strony administrator gdy coś się zwali musi szybko i sprawnie działać przez co daje to pracę w większym stresie...
Czy ja wiem... Mam naście lat doświadczenia w pracy dla firm z
sektora finansowego. Co nowego można zrobić w banku? :) Bardziej
to jest kwestia tego, że programista robi projekty, a administrator ma
proces. Pierwszy robi raz i ma gdzieś ile czasu zajmuje jakaś tam
czynność. Drugi patrzy na procedury, które stara się optymalizować.
W skrócie to dwa różne światy i nie bardzo da się porównać. Ktoś mi
kiedyś powiedział, że każdy programista przynajmniej przez chwilę
powinien być adminem. No i to się zgadza.
4. Jakie są zarobki - widełki w bazach danych. Wiadomo, że pieniądze też są rzeczą ważna i ciekawi mnie ile można zarobić nie mając doświadczenia, mając np 2 lata doświadczenia a mając np 7 lat :)
http://www.itconsultants.pl/projekt/4479/etl-developer...
Admin MySQL... pewnie z 5000-6000 zł za miesiąc.
Na tym poziomie abstrakcji ciężko powiedzieć o widełkach.

A programista? Co z początkującym adminem albo programistą?
Rozpiętość płacowa jest tak duża, że nawet znając konkretne miasto,
ciężko udzielić odpowiedzi na takie pytanie... Początkujący programista
czego? C++ / Javy? Polska firma? Firma wytwarzająca oprogramowanie
na zewnątrz, czy dla siebie?
Generalnie firmy z zagranicy płacą lepiej. Firmy, które robią oprogramowanie
dla siebie płacą lepiej, ale jest gorszy rozwój. Pytanie też co kogo interesuje -
ma być dużo roboty, dużo się dziać - czy wręcz przeciwnie. Każda sytuacja
ma plusy ma też minusy.
Stawki... nie kojarzę, żeby ktoś podawał stawki dla juniorów. Dla mnie to
za duży dystans czasowy, żebym coś sensownego powiedział...
Andrzej P.:
W Polsce, to jest chyba bardzo mało ofert, gdzie szuka się wyłącznie bazodanowców. Owszem, poprawnie zaprojektowana baza danych, to podstawa każdej aplikacji ale zazwyczaj zajmują się tym programiści, z kolei kwestiami administracyjnymi zajmują się klasyczni administratorzy. Tak wąskie specjalizacje, to można spotkać raczej w jakichś "data center" a tych w naszym kraju, to za dużo nie jest i raczej ciężko się tam dostać. Radziłbym ci jednak rozszerzyć swoje kwalifikacje o podstawy programowania.

Czy ktoś potwierdzi tą tezę? Bo jakoś wierzyć mi się nie chce :)
Wg mnie chyba brakuje tutaj takich wąskich specjalistów itd. Chociaż mogę się mylić.

Jak firma robi oprogramowanie dla siebie - będzie mieć admina od
baz danych. Tyle, że jak w Polsce siedzą tylko programiści - admin
będzie siedział tam gdzie centrala. Chodzi o to, że backupy i ogólne
ogarnięcie - może zrobić każdy. Jak oprogramowanie się zmienia -
zawsze może pojawić się problem. Admin ogólnego rażenia może
nie ogarnąć, a zewnętrzna obsługa - może być za wolna / zbyt kosztowna.
Ile razy projektuje się strukturę bazy? Zmiany są raczej niewielkie -
dodanie stada czujek do nagiosa / icingi, zbieranie i prezentacja
statystyk, sprawdzanie logów - i chyba tyle. Na co komu ktoś, kto zna
np. wewnętrzne struktury danych? No i zawsze są tacy, którzy ogarniają
na etapie wytwarzania.

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Przy okazji - programista baz danych to temat rzeka. Kim on jest, w jakich projektach jego rola jest istotna, a w jakich marginalna? Poniższy wpis może wyglądać jak z grupy "Projektowanie systemów IT", ale jest to nierozerwalnie związane z zagadnieniem baz danych.

1. Nadal dość popularne są systemy IT, których cechą charakterystyczną jest:
a. "wymieszanie" miejsc z logiką biznesową - trochę w kodzie aplikacji, trochę w bazie danych
b. podejście "database centric" - zaczynamy od projektowania magazynu danych (baza) - tworzymy tabele przechowujące konkretne dane, łączymy je związkami modelującymi wzajemne powiązania, a potem dopiero "dopisujemy" do tego kod w jakimś języku programowania. Tworzymy klasy na podstawie tabel ("mapujemy" je), dopisujemy klasy z logiką biznesową. Fragmenty kodu intensywnie operujące na danych przenosimy do procedur składowanych i widoków.
c. niewielka podatność na gruntowne zmiany, gdyż wymagają one przeprojektowania schematu bazy danych (w tym przeprojektowanie związków między tabelami, przemigrowanie danych do nowej struktury) oraz zmian w kodzie w wielu różnych miejscach (kod aplikacji, kod SQL w procedurach)

W takiej sytuacji, programiści "klasyczni" (C, Java, C#, Python itd) często sami sobie przygotowują bazę danych i zapytania do niej, stając się programistami baz danych.

Z drugiej strony, często w projekt zaangażowany jest także doradca, taki "magik baz danych", który dobrze zna zagadnienia optymalizacyjne - od strojenia bazy po pisanie zapytań. Siada razem z programistami i razem tworzą produkt.

Podejście takie nadal jest popularne w:
- wielu zwłaszcza mniejszych i niezbyt nowoczesnych firmach, takich "typowych", które trochę istnieją, trochę upadają, mają jakiś tam produkt i sobie go "rzeźbią" latami.

- korporacjach, w których rozwija się produkt zaprojektowany i wykonany w czasach, w których dominowały inne metodyki wytwarzania oprogramowania, inne technologie i trendy.

- w dużych i doświadczonych, ale jednak "skostniałych", konserwatywnych firmach, organizacjach i instytucjach, jak banki, służba zdrowia, gdzie najważniejsze jest: szybkość działania, doświadczenie i znajomość słabości/zalet danej technologii przez zespół, kompatybilność wsteczna z już istniejącym kodem (często to tysiące już istniejących procedur, modułów). Tam "ma działać szybko i dobrze" + szybki i skuteczny serwis. a kwestie elastyczności w zakresie rozbudowy czy kontaktów z innymi systemami IT - stoją na dalszym planie.

Charakterystyczne jest to, ze programiści takich systemów zwykle zaczynają od diagramów ERD albo diagramu klas traktowanego jak diagram bazy danych. Widoczna jest na tym etapie walka z redundancją danych, maksymalna normalizacja modelu i staranny dobór struktur danych.

W takich firmach jest duże zapotrzebowanie na programistów baz danych.

2. Zdarzają się, zwłaszcza w systemach bankowych i medycznych, całe programy "przeniesione" do bazy danych. Tzn. w bazie znajdują się zarówno dane jak i logika. Do tego dobudowany jest jedynie interfejs użytkownika. Takie systemy, chociaż totalnie "sztywne", bardzo nieelastyczne, trudne do rozbudowy, mają jednak swoje zalety (właśnie dlatego się je stosuje) jak szybkość i homogeniczność środowiska. Wdrożenie takiego systemu na nowej instancji to po prostu przywrócenie z backupu :)

Tam "programista baz danych" znajdzie się w swoim żywiole.

3. Istnieje klasa systemów informatycznych, gdzie wielki nacisk kładzie się w pierwszej kolejności na elastyczność rozbudowy, heterogeniczność i decentralizację (m.in. źródeł danych) a dopiero później na kwestie wydajnościowe.

Są to np. nowoczesne systemy klasy ERP (bo w starszych nadal dominuje podejście z pkt. 1) dla różnych dziedzin działalności (w tym medycyna), rozproszone systemy internetowe, które projektuje się zupełnie inaczej:
- podejście w pełni obiektowe (a nie "z użyciem obiektów")
- "reality centric", tj. zaczynamy od modelowania rzeczywistości, wyodrębniania pojęć, domen, aktorów, obiektów, opisu zachowań obiektów, zupełnie nie przejmując się miejscem składowania danych, nie zajmujemy się "schematami, tabelami, kluczami, kolumnami, triggerami", itd. Operujemy diagramami UML, nie traktując diagramu klas jako "zastępnika dla ERD".
- dobrze odwzorowują zmienną, dynamiczną rzeczywistość bez patrzenia na ograniczenia stawiane przez model relacyjny
- praktycznie zupełny brak przejmowania się redundancją danych, wręcz celowa denormalizacja modelu
- brak ukierunkowania na jakieś konkretne źródło danych. System może przechowywać stan obiektów w "bazie danych" (dowolnej, w tym nierelacyjnej), słowniki mogą pochodzić z webserwisów, a niektóre dane być zaciągane z plików XML, CSV od użytkownika lub z hurtowni danych. Dziś użytkownik pracuje na Oracle'u, jutro chce przejść na PostgreSQL i nie interesują go różnice. Pojutrze część danych może być zapisywana "w chmurze" - gdzie już zupełnie nie znamy szczegółów implementacyjnych, mamy tylko wystawione API
- stosuje się wysoce abstrakcyjne warstwy pośrednie z użyciem tzw. ORMów (pozwalających nieco zmniejszyć przepaść między relacyjnymi bazami danych a "światem obiektowym", mówiąc prosto: mapując tabele na obiekty, kolekcje realizując za pośrednictwem związków między tabelami) oraz repozytoriów obiektów danych, separujących maksymalnie warstwę logiki od warstwy źródła danych. Dobrze zaprojektowany system tak naprawdę nie ma pojęcia, "na jakim źródle danych pracuje", tam może być cokolwiek.

W takich miejscach "programista baz danych" nie znajdzie praktycznie nic dla siebie. Z jednym wyjątkiem - otóż czasem w tego rodzaju rozwiązaniach zdarza się sytuacja, że trzeba "skroić system na miarę pod konkretną bazę danych". Wtedy można sobie pozwolić na optymalizację i przygotowanie pewnych zapytań pod wskazany silnik, uwzględniając jego specyfikę. Ale to raz czy dwa razy. Potem firma może podziękować takiej osobie za współpracę.

4. Osobnym zagadnieniem są firmy spoza IT, korzystające z baz danych jako końcowi użytkownicy. Mają oprogramowanie, które zapisuje do tych baz jakieś dane, ale potrzebują specjalisty do ich odczytywania i wyciągania z nich istotnych informacji, czyli - raportowania. Przyda się też tutaj nieco programowania w innych językach.

Tam programista SQL może mieć życie pełne wyzwań, bo szefowie różnych działów uwielbiają "wskaźniki, słupki i panele analityczne" :)

5. Firmy typowo badawcze, które analizują dane. Tutaj znajomość zagadnień tworzenia, migracji (!) i odpytywania baz danych są jedną z głównych umiejętności. Administracja i optymalizacja silnika nie jest priorytetem - od tego jest administrator. Przykład - medycyna i badania kliniczne. Tutaj zapytania potrafią być mega skomplikowane (choć i tak łatwiejsze, niż odpowiednie konstrukcje w SAS czy R), więc programista SQL będzie miał dość możliwości do wykazania się :)

W takich firmach potrzebne są osoby interdyscyplinarne, więc np. statystyk, programista i bazodanowiec, więc i zarobki mogą być wielokrotnie wyższe (możliwe 5 cyfrowe kwoty). Jeśli ktoś jest bazodanowcem z dobrą znajomością nie tylko SQLa, a odkryje w sobie dodatkowo "żyłkę" analityka i ma jeszcze nieco wiedzy branżowej, może istotnie zmienić pułap wynagrodzeń.Ten post został edytowany przez Autora dnia 04.06.15 o godzinie 18:56

Temat: Pierwsze kroki z bazami danych + pytania od studenta!

Wiadomo, że w bazach danych jest mniejszy popyt od programistów np Javy. Co dawałoby mi w przyszłości mniejszy wybór co do praktyk na przykład... Jakoś nie widzę dużo ogłoszeń o pracę jeśli chodzi o bazy :) Mówie tutaj w porównaniu z programistami gdzie ofert jest masa :) Jeśli ktoś szuka bazodanowca to musi mieć doswiadczenie min 2-3 lata itd. i dają 5 k. Może źle szukam? A może taka jest już prawda?

Następna dyskusja:

Wymiana danych pomiedzy baz...




Wyślij zaproszenie do