Aktywne Wpisy
jestem_tunowy +618
kolczyk w nosie - największe oszpecenie jakie może sobie sprawić kobieta w XXI wieku imo nawet znacznie gorsze od tatuaży, obrzydliwa moda i instant redflag, zgadzasz się - plusujesz
#p0lka #logikarozowychpaskow #rozowepaski #zwiazki #piercing
#p0lka #logikarozowychpaskow #rozowepaski #zwiazki #piercing
DavyX +830
tl;dr: jak zrobić produkcyjnie rective relacyjną bazę w Javie/Springu?
Żeby na froncie dane był pokazywane na żywo (a nie odświeżane np. co sekundę) to stosuje się Websockety (komunikacja pomiędzy frontem a backendem).
A co z komunikacją pomiędzy backendem z bazą danych?
- Jak stosuje się bazy NoSQL np. MongoDB, to nie ma problemu, bo da się w Jave/Springu zasubskrybować na zmiany w bazie (podejście reactive tzn. Flux/Mono).
- Co z relacyjnymi bazami danych (np. PostgreSQL, Oracle, MS SQL)? Zwykłe JDBC nie wspiera podejścia reactive (A bez tego nie wiadomo kiedy coś się w bazie zmieniło bez sprawdzania co np. sekundę). Teoretycznie jest R2DBC, ale to bardzo wczesna wersja i chyba nikt nie używa tego na produkcji. Jak ludzie to robią produkcyjnie z relacyjnymi bazami?
nie szukaj po słówku "reactive", tylko raczej "non blocking". JDBC przez swoje API zawsze będzie tylko blocking. Są drivery do baz danych nieblokujące, ale one nie zapewniają spójnej warstwy abstrakcji jak JDBC. Ogółem, rzeźba w #!$%@? i nie polecam tego robić w sofcie, który ma być parę lat w utrzymaniu (a jak wiemy, prowizorki są najtrwalsze).
możesz sobie zapiąć w postgresie trigger z wywołaniem notyfikacji, a potem odebrać ją u siebie w kodzie. Taka prymitywna kolejka.
https://camel.apache.org/components/latest/pgevent-component.html
Mam tylko wymaganie, że muszę mieć dane "na żywo".
1) Tylko pod to jedno wymaganie zmienić bazę relacyjną (super wsparcie JPA/Hibernate; mam w zespole specjalistów od relacyjnych baz) na NoSQL (wsparcie non blocking, ale dużo gorzej z JPA; nikt w zespole dobrze nie zna nierelacyjnych)?
2) Zostawić bazę relacyjną, ale użyć eksperymentalnego
@globalbus: będę musiał wspierać kilka baz np. obowiązkowo Postgres i dodatkowo jedna z Oracle/MS SQL/MySQL/MariaDB. Między innymi dlatego też używam JPA/Spring Data. Wiem, że zawsze jakiś wyjątek trzeba zrobić pod kolejną bazę, ale chciałbym jak najmniej używać specyficznych rzeczy z konkretnej bazy.
O generyku pod wiele baz zapomnij, bo nie istnieje ( ͡° ͜ʖ ͡°)
Już lepiej lepić potworka, który łączy jakiś cache nonsqlowy z relacyjną bazą. Wybór konkretnego zestawu jest bardzo specyficzny i zależny od danych.
Na potrzeby szybkich wyszukiwań pełnotekstowych popularne jest miksowanie elasticsearch z relacyjnymi.
@globalbus: nie było, bo istnieje chyba tylko R2DBC, które było w wersji beta, a dopiero od niedawna jest w GA. Tylko ciekawe czy ktoś tego będzie używał.
Czemu rzeźba? Jakby samemu trzeba było to robić to pewnie tak, ale z R2DBC może nie?
Spring
@mk321: websockety?
Ale websocketów z bazy do backendu nie zrobię.
?
TomTom (oddział w Łodzi) swego czasu próbowali zrobić reaktywny sterownik do postgresql. Z średnim rezultatem, ale może coś się zmieniło przez 2 lata. Opublikowany na GH, ale coś teraz nie mogę znaleźć.