Nie jestem typowym korpo-programistą 15k, ale zrobiłem w życiu parę projektów. Większość z nich było oparte na relacyjnych bazach danych głównie mysql.
Od kilku lat robię też projekty oparte na mongoDB i choc na początku zauroczyła mnie ich prostota to stwierdzam, że przy większych projektach relacyjna baza daje większą kontrolę a mongo prowadzi do chaosu (chyba że zostaną zaimplementowane relacje co chyba mija się z celem nierelacyjnych baz danych).

Ciekawi mnie wasza
Koliedzy, jaką bazę byście użyli do zapisywania notowań giełdowych z aplikacji streamującej, a jakiej do przechowywanie portfela klienta?

W 1 przypadku będziemy mieli:
timestamp, kod instrumentu finansowego, kod waluty, cenę

W 2 przypadku:
creation timestamp, update timestamp, id klienta, (listę tripli / mapę / macierz): { kodów instrumentów, kodów waluty, ilość }

#programowanie #bazydanych
@automatykwformie: baza raczej nawet nie w pierdnie chyba że jest tego na prawdę dużo.
Jak dużo to widok indeksowany j/w albo wyliczanie tego do tabeli na boku przy użyciu trigerow create update delete
@rosso_corsa: Zrób zmienność jakości w czasie dla danej lokalizacji, zobacz czy ludzie dzielą to czym palą na wsad dzienny (czystszy) i nocny (brudny). Narzuć na to też dane o temperaturze i siłę wiatru. Postaraj się przewidzieć na podstawie takich danych jaka będzie jakość jutro oraz co ma największy wpływ - godzina, temperatura, wiatr?
Czołem Mirki i Mirabelki
Dziś nowy kurs z tematyki #bazydanych #oracle i #sql dla średniozaawansowanych jak i początkujących:
Tabela zorganizowana według indexu (ang. Index-Organized Tables)
W kursie:
* Opisuję czym są IOT
* Przedstawiam ich struktórę i porównuję ją do zwykłego indexu B-tree oraz tabeli
* Pokazuję jak je wykorzystać oraz jak wygląda plan zapytania
* Zwracam uwagę na organiczenia w użyciu Index-Organized Tables

Wracam do pisania o indexach i w kolejnych
Ma ktoś cassandrę zainstalowaną? Możecie puścić mój gównokod czy działa czy wywala się?
Nie mam sił się z tym męczyć by to zainstalować na windowsie.
#bazydanych

create keyspace logs;
use logs;

create table readlogs (
uuid uuid,
timestamp timestamp,
usersUuid uuid,
personsUuid set>
primary key (personUuid)
) WITH CLUSTERING ORDER BY (timestamp desc);

create table change
logs (
uuid uuid,
timestamp timestamp,
userUuid uuid,
personUuid uuid,
description text,
type text,
parimary
@inny_89: Z doświadczenia to całe zasilanie powinno się odbywać w dwóch krokach Source - Extract, Extract - Stage. Oczywiście mówię o hurtowni zasilanej raz na dobę nocną porą.

1. Source - Extract - truncate docelowych tabel i zasilenie ze źródła. Tak jest najszybciej. Nawet jak masz tabele do 100 mln rekordów. Z produkcji zasilamy dane tak szybko jak to jest możliwe.

2. Extract - Stage - zasilenie przyrostowe. I tu już
@inny_89: https://stackoverflow.com/questions/38487667/overwrite-specific-partitions-in-spark-dataframe-write-method

Ustawia się to jedną linijką w configu:

spark.conf.set("spark.sql.sources.partitionOverwriteMode","dynamic")
Wybacz też wysoki poziom abstrakcji przy opisywaniu założeń. :)


@inny_89: spoko, generalnie nie zajmuję się hurtowniami jako takimi i nie mam generalnie zbyt dużej wiedzy o pracy z nimi, za to coś tam technicznego ze sparka mogę pomóc ( ͡° ͜ʖ ͡°)
#anonimowemirkowyznania
#sql #pomocy #porada
Cześć,
muszę napisać z anonima, żeby mnie nikt nie skojarzył.
Obecnie skończyłem inżyniera z mechaniki. Studia fajne, ale nie umiem nic ciekawego sobie znaleźć. Pracuję obecnie w firmie, zajmuję się specyfikacjami technicznymi urządzeń i kontaktem z klientem (zagranica). Robota niby całkiem okej, ale brak nowych wyzwań powoduje u mnie nudę.
Chciałbym się z czegoś przeszkolić, poszukać sobie innego zajęcia, które spowoduje, że znajdę pracę w innym miejscu, gdzieś
@AnonimoweMirkoWyznania: Obie drogi jakie rozważasz mogą być potencjalnie tak samo nudne jak to co teraz robisz. Sam robie w bazadanych ale jakoś administrator/helpdesk i tu jest jeszcze jakaś rozrywka bo nigdy nie wiesz na co klient wpadnie.
W mechanice może warto abyś rozejrzał się za jakimś projektowaniem - znajomy pracował w Instytucie lotnictwa w centrum projektowym dla GE i co kilka mce wyjazdy albo Anglia albo RPA(mieli kontrakty na instalacje do
via Wykop Mobilny (Android)
  • 0
@rosso_corsa: jak Warehouse obsługuje ten sam typ bazy danych to można próbować bez narzędzi, ale jak masz różne to pisanie narzędzia na nowo jest bez sensu. Wybierz jakieś gotowe
@rosso_corsa: Wszystko zależy jaki jest to ekosystem, kiedy został stworzony, jakie zapotrzebowanie itd.

Brałem udział przy pisaniu na nowo całego silnika DWH pod kontrentne zastosowanie. Czysta baza, t-sql, powershell i c#, więc wiem że się da to zrobić bez dodatkowych komponentów.

Czasem wykorzystuje się pojedyncze komponenty przy rozwiązaniach mających źródło kilkanaście lat temu. Np kilkuset terabajtowa farma oparta na pl-sql i kontrolerach napisanych w c. Do tego jakieś pudełkowe rozwiązania pilnujace
Siema powie mi ktoś co robi tu źle że wywala mi blad "Foreign key constraint is incorrectly formed". Idproducenta ma byc kluczem obcym powiazanym z id z tabeli producenci

ALTER TABLE produkty
ADD FOREIGN KEY (id_producenta)
REFERENCES producenci(id);

#sql #bazydanych
#sql #bazydanych #programowanie #postgresql
Próbuję wdrożyć pagination oparty na metodzie „keyset”, zamiast tradycyjnie „offset”.
Wszystko jest jasne dopóki strony idą do przodu np:
SELECT * FROM users WHERE id > 1500 ORDER BY ID LIMIT 10.
Ale co zrobić gdy użytkownik się cofa? Teoretycznie mogę odwrócić znak większości i zmienić DESC na ASC, ale wtedy otrzymuję wyniki w odwrotnej kolejności. Da się to jakoś lepiej zrobić?
Pobierz Alodnog - #sql #bazydanych #programowanie #postgresql 
Próbuję wdrożyć pagination opa...
źródło: comment_1611067419eLX7l6HWdpi5hdPRa7JQng.jpg
@Campell: W sensie jak pójść w tył? Ja tylko w tym moim WHERE zaznaczam granicę od której liczyć rekordy, więc jeśli chciałbym się cofnąć to mógłbym zrobić WHERE id < 1500 ORDER BY id ASC LIMIT 10. I to zadziała, zwróci mi 10 właściwych rekordów, ale w odwrotnej kolejności niż bym szedł do przodu
@Alodnog: Wybierz interesujące Cię rekordy ze strony w podzapytaniu i tam zrób asc/desc jak tam chcesz, a w nadrzędnym zapytaniu posortuj jeszcze raz po tym czym chcesz czyli po id. np.

select * from (
select SELECT * FROM users WHERE id < 1500 ORDER BY ID DESC LIMIT 10
) as pusr
order by pusr.id asc;
@ostrykuc666: hmm bo wydawalo mi sie ze kiedys wrzucalem na oś x dzien z hierarchii, wybieralem filtry na rok, miesiac, dzien i mi robilo wykres godzinowy na wykresie liniowym ale teraz patrze ze cos mi to nie dziala wiec zrobie tak jak mowisz, dzieki!
Mam setki GB do przeniesienia. Zakładam, że długie ścieżki i nazwy plików z niedozwolonymi znakami mogą stworzyć problemy.
via Wykop Mobilny (Android)
  • 0
@zlack: migracja 1 do 1 zapewne nie ma sensu. Zbuduj sobie funkcjonalność bibliotek ma Sharepoincie, Teams Grupa office 365 per dział / projekt i pliki wrzucasz tam
via Wykop Mobilny (Android)
  • 0
Mam proste zapytanie SQL, zwykły select z 3 warunkami. Na końcu jest sortowanie, i obcięcie wyników do kontretnej ilości za pomocą LIMIT. I wszystko jest ok, dopóki nie zmienię warunku w taki sposób, aby rezultatem było 0 wierszy. Wtedy czas trwania zwiększa się z 0.01s do ponad 20sekund. Usunięcie limitu sprawia, że zapytanie wykonuje się tak szybko jak przed zmianą warunku i z zachowaniem limitu. Czyli:
-select zwracający 100 rekordów i obcięty
@bomba4: Nie wiem jak do końca działa limit w mysql ale najwidoczniej liczy rekordy podczas wykonywania zapytania co może faktycznie orać optymalizację. Z uwagi, że limit 0 podejrzewam, że liczy każdy rekord jaki zapytanie wypluwa, jeden po drugim.

Operowanie na zapytaniu zagnieżdżonym ustala już konkretną ilość rekordów i na końcu ogranicza. Jest to szybsze dla silnika. W prawie każdej swojej procedurze w pracbazie wykonuję takie zagnieżdżenia albo korzystam z tabel tymczasowych,
via Wykop Mobilny (Android)
  • 0
@thomekh: tylko tu nie chodzi o limit 0, tylko o sytuację kiedy masz 2 zapytania sqlowe które różnią się jednym warunkiem. Pierwsze zapytanie (bez limitu) zwraca 100 rekordów, a drugie 0. Oba się wykonują w ciągu 0.01s. Następnie do obu dopisuje Limit 10, i to pierwsze nadal się wykonuje 0,01 a to drugie już 22s

Ogarnąłem to tak jak pisałem, ale i tak jest to dla mnie dziwne. Sam limit obcina