#docker #postgresql #devops

Robię sobie swój obraz Dockerowy na podstawie tego Postgresowego. Chcę go rozszerzyć o ściągnięcie moich danych i załadowanie do bazy (żeby potem każdy mógł łatwo odpalić bazę z moim datasetem). Mam już wszystkie skrypty itd.

Zrobiłem inicjowanie według tego: https://hub.docker.com/_/postgres#initialization-scripts
Tzn. podczas budowania obrazu (w Dockerfile) wrzucam do folderu /docker-entrypoint-initdb.d/ dwa pliki: skrypt, który zajmuje się ściągnięciem danych i SQL, która ładuje do bazy. Wszystko
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mk321: Napisz właśny Dockerfile, nie używaj entry point,. Napisz własny skrypt który uruchamia bazę i wrzuca dane a potem zamyka bazę. Dodaj tej skrypt a potem uruchom go w RUN.
  • Odpowiedz
@mk321: No niestety, jeśli dane muszą być w bazie to musi ona być zainicjalizowana na etapie budowy kontenera. Alertnatywnie, tylko ściągnij dane w RUN, a potem napisz skrypt który to ładuje i dodaj do tego folderu, aby się uruchomił przy pierwszym starcie.
  • Odpowiedz
Hej, jakie według Was są najważniejsze rzeczy jeśli chodzi o #sql #mysql #postgresql, które pojawiają się na rozmowach kwalifikacyjnych? Poziom to mniej więcej mid #php. Zawsze do tej pory googlowałem jak miałem jakikolwiek problem z bazami i nie jestem do końca przekonany, że takie tłumaczenie się zabrzmi przekonywująco podczas rozmów ( ͡° ͜ʖ ͡°)
#pracait
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PraktykaMalegoWygrywu: To zależy jaki poziom pracodawcy... Dobry pracodawca z dobrym kodem i zapleczem prawdopodobnie zapyta się jakie znasz ORM'y i jak przyspieszyć ich działanie, albo gdzie trzymać opis schemy (w adnotacjach czy w plikach i czemu). A taki co "pisze SQL'ki z ręki" będzie pytać o optymalizacje joina różnice między myisam i innodb, o tranzakcje... Jak zapyta o triggery to uciekaj bo odbywa się tam upychanie logiki aplikacji do bazy
  • Odpowiedz
@obieq: nie no, normalne optymalizowanie było od zawsze, ale teraz będzie można bezkarnie pisać sobie te piętrowe i Postgres zoptymalizuje je jako całość. Dotychczas każde podzapytanko CTE było materializowane, czyli obliczane ad-hoc i jego wynik był trzymany w pamięci.
  • Odpowiedz
Mirki,
próbuję zrobić sumę dla daty oraz sumę kroczącą w postgresie. Jak robię:

select time::date as date, count(warning) from warnings group by date;
to wypluwa mi wyniki po dacie (data pierwotnie w formacie timestamp)

2019-01-10
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Siema. Wiem, że na wypoku są mirki, które świetnie ogardniają bazy danych, a zwłaszcza PostgreSQL.
Otóż mam taki problem z bazą danych. mam skrypty napisane w #php, które odpalane są CRONem. No wszystko działa super, ale jest jeden mały problem, jeżeli przestawić ustawienie na czytanie danych z repliki bazy danych, a zapis do mastera, to sypie błędem:

PostgreSQL ERROR: canceling statement due to conflict with recovery
Poczytałem czym to jest spowodowane i
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@mariecziek powiedziałem czystym a nie w procedurze, w postgresa da się wszystko jednym zapytaniem zrobić. A jeśli macie takie problemy z logami to lepiej je zapisywać gdzie indziej
  • Odpowiedz
@plushy: To prawda. Po prostu projekt ma z 6 lat, napisany był oryginalnie w PHP, bez frameworków, zwyczajnie skrypty itd. Na tym wyrosły 3 wersje API, 2 wersje bez API, workery, projekty na loopbackjs itp. a baza danych jest niezmieniona. Trochę trudno byłoby wprowadzać tak daleko idące zmiany, gdy tyle projektów jest zależnych od jednej bazy danych.
  • Odpowiedz
pomocy (,)

zaczalem przygode z pythonem i proboje poprzez SQLalchemy wrzucic plik CSV do Postgresa. W pliku users.csv mam id, ktore jest w formacie UUID. Plik sie elegancko wrzuca, ale z UUID ucina ostatnie
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@RapRose: @RapRose: tam jest chyba cos z-----e w tym pliku CSV, bo jak przekopiuje to mi koncowke daje od nowej linii zawsze. Olalem to w sumie i wrzucilem jak jest i chyba jest ok bez tych 2 ostatnich.

A co do formatu danych to tak, dawalem na poczatku UUID ale nic to nie zmienialo. Wydaje mi sie ze tak jest ok.
  • Odpowiedz
id, ktore jest w formacie UUID. Plik sie elegancko wrzuca, ale z UUID ucina ostatnie 2 znaki.

np:


w pliku mam id: d966bbc8-4f4a-477b-b00e-034aec8004f118

a wrzuca id: d966bbc8-4f4a-477b-b00e-034aec8004f118

jak dopisze w pliku do id: d966bbc8-4f4a-477b-b00e-034aec8004f118gowno
  • Odpowiedz
@plan_9 bo zamiast pobierać kolejne paczki i uruchamiać w tle dodatkowy program, to wykorzystuję to co oferuje mi mój serwer, skoro jest to dlaczego miałbym nie używać? Ale przeszedłem na MySQL, bo w wifi mam porty poblokowane, a nie mam dostępu do panelu zarządzania.
  • Odpowiedz
@zlodziejb: Dlatego, że do developmentu łatwiej i szybciej jest postawić bazę lokalnie ewentualnie całe środowisko dev przenieść na zewnętrzny serwer np. jakiś VPS ale MyDevil nie oferuje chyba nic takiego. A tego MySQL gdzie masz postawionego?
  • Odpowiedz
Cześć. Mam pewien problem z optymalizacją zapytania. Zapytanie składa się w chwili obecnej z WITH query, z którego ściągam informację o płatnościach użytkowników. (samo subquery wykonuję się błyskawicznie) Z powyższego subquery chciałbym otrzymać tylko pojedyncze wartości dla danego usera (pierwsza transakcja). Korzystałem więc z rownumber() z order by po dacie transkacji i wybierałem te których rownumber = 1, lecz trwa to zbyt długo. Próbowałem też distinc on, wrzucenie subquery do
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam bazę danych z danymi przestrzennymi, korzystam z Entity Framework dla Postgresa i dodatku NetTopologySuite. Wysyłam zapytanie ajaxowe o wszystkie dane z jakieś tabeli, powiedzmy, że ma ona 2 kolumny: Id i Location, gdzie Id jest typu int, a Location typu Point (przestrzenne). Kiedy robię w kontrolerze po prostu:

return Db.NazwaTabeli.ToList();
to chrome wyrzuca mi błąd net::error_connection_reset (200) OK.

Kiedy natomiast zrobię np. coś
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Czesiowcy: Akurat na to trafiłem więc skorzystałem, nie zagłębiałem się. Dane w tych typach są zapisywane dobrze w bazie i mam ich dobry podgląd. Problemem jest raczej parsowanie ich na json
  • Odpowiedz
Coś pomieszałeś, to jest błąd który mówi że przeglądarka nie potrafi się połączyć z serwerem po ssl (protkokół https) a w tym poradniku nic nie ma o tym żeby konfigurowali połączenie po https, (co jest nawiasem mówiąc dużym błędem). Jest takie magiczne miejsce zwane /var/log/http i tam z dużym prawdopodobieństwiem znajdziesz odpowiedź na dręczące pytanie "co tu jest źle". :)
  • Odpowiedz
Ostatnio jakoś trochę zamula mi mój obecny hosting od linuxpl. Korzystając z okazji, że przenoszę domeny zarejestrowane u nich do OVH, wpadłem na genialny plan przeniesienia też samego hostingu. Możecie coś polecić w równie przystępnych cenach ale z większymi możliwościami? Nie pogardziłbym możliwością hostowania aplikacji pisanych w Node i Javie oraz innymi bazami danych niż MySQL. Nie jest to jednak warunek determinujący zakup bo od tego mam też VPSa.

#hosting
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 2
@devones: @goomba-pl: yup, jak budujesz odpowiednio za pomocą serverless to możesz w cholere zaoszczędzić. Np ten serwis Haveibeenpwned.com wg podlinkowanego masz całe zuzycie opisane. W usługach cloudowych masz zazwyczaj free grant, dopiero jak zrobi się z tego cos więcej to płacisz per wykonanie

https://www.troyhunt.com/serverless-to-the-max-doing-big-things-for-small-dollars-with-cloudflare-workers-and-azure-functions/
  • Odpowiedz
Czy jest na sali ktoś od #postgresql ?
Na pewno, ktoś jest, bo pamiętam, że ktoś dodawał kiedyś tu sporą książkę o postgres w PDF.
Potrzebuję pomocy właśnie takiej osoby.
Załączam tutaj Explain analyze zapytania #sql Może ktoś potrafi mi wytłumaczyć dlaczego to co jest w 3 czy też 5 linijce zużywa tyle czasu? Pobieranie danych trwa znacznie szybciej. Już robiłem optymalizację tego zapytania, ale teraz trafiło znowu
mariecziek - Czy jest na sali ktoś od #postgresql ?
Na pewno, ktoś jest, bo pamiętam...

źródło: comment_RWNnGI7A3VjTWTyL0n3RJSbMg1RbooKr.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Duze_p--o: No z indeksami może być problem. Raz, że nikt niespecjalnie dbał o indeksy (baza danych w większości tabel nie ma indeksów i kluczy głównych), to dodatkowo w zapytaniu użyty jest dblink (który aż tak za bardzo nie wpływa na czas wykonania zapytania do DB, a przy pobieraniu wg czasu - wcale). To do tego w zapytaniu jest konwersja integera (timestamp) na timestamp with timezone (w formacie YYYY-MM-DD HH24:MI:SS), a
  • Odpowiedz