Baza danych z mnóstwem wejść

Baza danych z mnóstwem wejść
MP5A4
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:8
0

Mam zagwozdkę. Jestem na wstępnym etapie (jeszcze koncepcyjnym) pracy nad systemem, który będzie służył do gromadzenia i wizualizowania danych - w wielkim skrócie można to nazwać "klonem Google Data Studio". Co mam na myśli?

  1. Liczba źródeł danych będzie przyrastać w czasie tzn. będzie ich coraz więcej. Każde ze źródeł danych będzie uruchamiane w innym momencie oraz będzie dostarczało inny zestaw danych.
  2. Ilość przetwarzanych danych będzie rosła geometrycznie (bo nie tylko będzie więcej źródeł, ale również więcej "powodów", aby je przetwarzać).
  3. Baza danych musi być bardzo szybka (zarówno w odczycie jak i w zapisie), ponieważ będziemy aktywnie przetwarzali dane.

Jak ugryźć taki problem od strony architektury? Z czymkolwiek się Wam to kojarzy?

PS. Do płatnej konsultacji dotyczącej wspomnianego przeze mnie projektu poszukuję dwóch specjalistów:


Szukam do pomocy (płatnej konsultacji):
- Specjalistę ds. baz danych
- Doświadczonego programistę
Odezwij się do mnie w prywatnej wiadomości i/lub przejrzyj moje ostatnie wątki.
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 2 godziny
  • Postów:2064
1

mało konkretów !


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
MP5A4
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:8
0
Adamek Adam napisał(a):

mało konkretów !

Nie mam ich więcej. Kierunek projektu zależy ode mnie. Konkrety powstaną na podstawie rad, które otrzymam. Nie oczekuję też gotowego rozwiązania, a raczej wskazanie kierunku.


Szukam do pomocy (płatnej konsultacji):
- Specjalistę ds. baz danych
- Doświadczonego programistę
Odezwij się do mnie w prywatnej wiadomości i/lub przejrzyj moje ostatnie wątki.
SL
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 godzin
  • Postów:857
1
MP5A4 napisał(a):

Nie mam ich więcej. Kierunek projektu zależy ode mnie. Konkrety powstaną na podstawie rad, które otrzymam. Nie oczekuję też gotowego rozwiązania, a raczej wskazanie kierunku.

Przy takim poziomie zaangażowania to musisz znaleźć ogarniętą osobę, która będzie Ci zadawała pytania jak na przesłuchaniu. Inaczej się nie da tego zrobić. Z tego co widzę (oczywiście nie mogłeś tego zawrzeć w poście, bo po co) to chcesz zrobić coś ala Looker Studio a to ciężkie zadanie, bo przechowywanie ogromnych ilości danych nie jest tak dużym problemem jak robienie skomplikowanych zapytań na takim wolumenie

edytowany 1x, ostatnio: slsy
MP5A4
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:8
0
slsy napisał(a):
MP5A4 napisał(a):

Nie mam ich więcej. Kierunek projektu zależy ode mnie. Konkrety powstaną na podstawie rad, które otrzymam. Nie oczekuję też gotowego rozwiązania, a raczej wskazanie kierunku.

Przy takim poziomie zaangażowania to musisz znaleźć ogarniętą osobę, która będzie Ci zadawała pytania jak na przesłuchaniu. Inaczej się nie da tego zrobić. Z tego co widzę (oczywiście nie mogłeś tego zawrzeć w poście, bo po co) to chcesz zrobić coś ala Looker Studio a to ciężkie zadanie, bo przechowywanie ogromnych ilości danych nie jest tak dużym problemem jak robienie skomplikowanych zapytań na takim wolumenie

Jak najbardziej jestem skłonny zapłacić za takie konsultacje, vide: https://4programmers.net/Forum/Og%C5%82oszenia_drobne/364181-platna_konsultacja_specjalisty_ds_baz_danych?p=1873390#id1873390 ale dodatkowo szukam opinii i pomysłów.


Szukam do pomocy (płatnej konsultacji):
- Specjalistę ds. baz danych
- Doświadczonego programistę
Odezwij się do mnie w prywatnej wiadomości i/lub przejrzyj moje ostatnie wątki.
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:12 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
2
MP5A4 napisał(a):

Z czymkolwiek się Wam to kojarzy?

Duża ilość danych kojarzy mi się z Cassandrą. Ale w zasadzie to zalezy od rodzaju zapytań jakie będziesz wykonywać


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
2

czy dane zebrane muszą być widoczne "od razu" do analizy? Pytam bo generalnie Baza danych musi być bardzo szybka (zarówno w odczycie jak i w zapisie) to się nawzajem wyklucza. Rozwiązaniem może być gromadzenie danych online do jednego worka a potem, np. raz dziennie przerzucanie ich hurtem do drugiego worka na którym będzie działać przetwarzanie danych


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:3 dni
  • Postów:3168
1

Podstawowe pytanie:

  • jaki rodzaj/struktura danych
  • jaka wielkosc (np. Kafka bardzo nie lubi duzych rekordow)
  • jaki klucz, po czym odczytujemy
  • czy potrzebujemy modyfikowac/usuwac dane
obscurity
to są cztery pytania
K5
Nie było kropki/znaku zapytania na końcu, a do tego wielka litera pojawiła się tylko raz więc można powiedzieć że było jedno pytanie xd
WhiteLightning
@obscurity: o subquerries nie slyszales?
S4
  • Rejestracja:około 3 lata
  • Ostatnio:około rok
  • Postów:1268
1
MP5A4 napisał(a):
  1. Liczba źródeł danych będzie przyrastać w czasie tzn. będzie ich coraz więcej. Każde ze źródeł danych będzie uruchamiane w innym momencie oraz będzie dostarczało inny zestaw danych.

Kolejki, Kafki na wejścia. Co znaczy będzie rosła? Ile danych będzie wysyłać jedno źródło. Co się ma wydarzyć z tymi danymi.

  1. Ilość przetwarzanych danych będzie rosła geometrycznie (bo nie tylko będzie więcej źródeł, ale również więcej "powodów", aby je przetwarzać).

To jest enigmatyczne, że jedyna słuszna odpowiedź to zależy.

  1. Baza danych musi być bardzo szybka (zarówno w odczycie jak i w zapisie), ponieważ będziemy aktywnie przetwarzali dane.

Nie ma takich baz dlatego między innymi robi się hurtownie danych.

Jak ugryźć taki problem od strony architektury? Z czymkolwiek się Wam to kojarzy?

Chyba porywasz się z motyką na słońce. Takie rzeczy robią firmy z milionowymi budżetami: MS, Google itp

Najlepiej jaki problem chcesz rozwiązać to będzie można jakoś ugryźć temat. Na tą chwilę jest on nie określony.

MP5A4
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:8
0
abrakadaber napisał(a):

czy dane zebrane muszą być widoczne "od razu" do analizy? Pytam bo generalnie Baza danych musi być bardzo szybka (zarówno w odczycie jak i w zapisie) to się nawzajem wyklucza. Rozwiązaniem może być gromadzenie danych online do jednego worka a potem, np. raz dziennie przerzucanie ich hurtem do drugiego worka na którym będzie działać przetwarzanie danych

Wspaniałe pytanie. Czyli opóźnienie rzędu kilku godzin byłoby pomocne? Dane nie musiałby być dostępne od razu. Gdyby były dostępne następnego dnia, to byłoby OK.

WhiteLightning napisał(a):
  • jaki rodzaj/struktura danych

W zasadzie to próbuję odpowiedzieć na to pytanie.

WhiteLightning napisał(a):
  • jaka wielkosc (np. Kafka bardzo nie lubi duzych rekordow)

To będą bardzo małe rekordy rzędu 1KB ale będą ich setki milionów.

WhiteLightning napisał(a):
  • jaki klucz, po czym odczytujemy

Dla uproszczenia możemy przyjąć, że to będzie data.

WhiteLightning napisał(a):
  • czy potrzebujemy modyfikowac/usuwac dane

Świetne pytanie. Nie.

S4t napisał(a):

Chyba porywasz się z motyką na słońce. Takie rzeczy robią firmy z milionowymi budżetami: MS, Google itp

Mam jakieś 100k USD na opracowanie MVP, które zadziała w małej skali (mniej więcej 1/10000 tego co będzie oczekiwane jako wersja publicznie dostępna).

S4t napisał(a):

Najlepiej jaki problem chcesz rozwiązać to będzie można jakoś ugryźć temat. Na tą chwilę jest on nie określony.

Dzięki. Pomyślę o tym jak go doprecyzować bez zdradzania szczegółów, których zdradzić nie mogę.


Szukam do pomocy (płatnej konsultacji):
- Specjalistę ds. baz danych
- Doświadczonego programistę
Odezwij się do mnie w prywatnej wiadomości i/lub przejrzyj moje ostatnie wątki.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 godziny
0

To jest rozwiązanie dla konkretnego jednego podmiotu czy chcesz zrobić z tego ogólnodostępną usługę?

Kilkaset milionów rekordów nie brzmi zbyt groźnie, pracowałem nad aplikacją zbierającą dane z kilkuset źródeł, bazy danych po kilka terabajtów skompresowanych danych, liczba rekordów liczona w miliardach, raportowanie real time i wszystko działało błyskawicznie na zwykłym MS SQL Server z indeksami columnstore https://learn.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około godziny
  • Postów:2363
2

Czy potrzebujesz tego co oferują silniki bazodanowe?
Czy dane będziesz miał relacyjne?
Czy chcesz obrabiać dane w SQLu?
Czy ma to byc cloud native?

Możliwe, że nie potrzebujesz bazy danych, tylko rozproszonego storage, schedulera jobów i elastyczności w tworzeniu jobów przetwarzających dane.

W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:18 minut
  • Postów:3520
0

Istnieją rozwiązania oparte zazwyczaj na Hadoopie, które pozwalają ciągnąć i zapisywać dane z różnych źródeł, np. możesz napisać SELECT * FROM myEntity JOIN anotherEntity WHERE myEntity.id = anotherEntity.id, gdzie myEntity może oznaczać zarówno plik CSV lub topic Kafkowy, a anotherEntity to tabela z np. MySQLa.

Problem zaczyna się, kiedy wymagasz wydajności, bo masz tutaj kilka wąskich gardeł - z jednej strony wspomniany topic kafkowy może być wolny, tak samo jak i np. baza SQL. Do tego musisz mieć mocny klaster, na którym będzie hulało owo rozwiązanie. IMO o ile da się jeszcze zagwarantować względną szybkość odczytu to w tej chwili bardzo trudno jest mi wyobrazić sobie sytuację, w której zapis do dowolnego źródła będzie bardzo szybki.

Natomiast jeśli zejdziesz trochę z wymagań, tj. stwierdzisz, że czytać można z dowolnego źródła, ale zapisywać będziesz do np. jakiegoś cache'a, który po pewnym czasie będzie wypychał dane do jakichś plików, to da się to wykonać. Natomiast ostrzegam, że stworzenie systemu opartego na tego typu rozwiązaniach jest czymś mega ciężkim i czasochłonnym.

Różnego rodzaju narzędzia mają swoje niskopoziomowe quirki. Np. hadoopowy sterownik do S3 pozwala zapisywać timestampy jako int32, int64 lub long - i jeśli spróbujesz porównać jeden timestamp zapisany jako int32 oraz longa to apka się wywali. A tutaj mówimy tylko o wykorzystaniu tego samego sterownika na różne sposoby.

edytowany 1x, ostatnio: wartek01
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)