#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