Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MySql nakon Postgresql-a (rant)

[es] :: MySQL :: MySql nakon Postgresql-a (rant)

Strane: 1 2

[ Pregleda: 3532 | Odgovora: 39 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BuzzLightyear

Član broj: 345017
Poruke: 71



+432 Profil

icon MySql nakon Postgresql-a (rant)26.11.2020. u 19:39 - pre 40 meseci
Full text search - neupotrebljiv.
Stored procedure - rezultat select naredbe ne može da se koristi u okviru FROM drugog upita.
Funkcije - ne mogu da vrate tabelu.
Temporary table - ne mogu da se referenciraju dva puta u okviru istog upita, već se mora raditi sa kopijom.
CTE - ne postoji pre verzije 8.

Imam osećaj kao da radim sa jednom vezanom rukom.
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: MySql nakon Postgresql-a (rant)26.11.2020. u 20:01 - pre 40 meseci
Za full text search, Sphinx ili ElastiSearch. :/ Nije sjajno, ali radi.

Za bilo koje ozbiljnije SQL stvari... Mislim, ima ta firmica koja pravi MySQL i jednu drugu bazu, koja sve to lepo radi. :) Za nas ostale - PostgreSQL.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)26.11.2020. u 20:59 - pre 40 meseci
fts, sta mu fali? (uvek mozes da koristis externa resenja kao sto nidza
rece ali u odnosu na psql ne vidim da je mysql-ov fts nesto znacajno
gori, bice da samo mozda nisi savladao sintaksu?)

sp - kako mislis ne moze ? i kakve veze ima stored procedura sa select
sintaksom?!

 > select * from (select * from tp1 limit 3) x join tp2 using (s1);
+--------+
| s1     |
+--------+
| 100005 |
| 100029 |
| 100036 |
+--------+
3 rows in set (0.00 sec)

fje ne mogu da vrate tabelu, to je limit koji mislim da nikad nece biti
uklonjen, kao sto nece najverovatnije nikad biti dodat "array" tip

temp tabele, nisam siguran da kapiram o kom limitu pricas, o
materijalizovanim intermediate temp tabelama ili o obicnim temp tabelama
posto obicu temp tabelu u toku sesije mozes da referenciras koliko puta
hoces kako hoces kao bilo koju drugu tabelu

CTE - da, tek od 8, ali kakve to veze ima, pa neces u 2020 godini da
koristis 5.x ?! koristis 8.x ... nema pre 8 mnogo toga, metadata se pre
8.0 cuva u frm fajlovima sto znaci da operacije nad tabelama nisu acid i
slicno .. mozemo da pricamo i o tome kako 3.23 nema left join l kako 4.0
nema ni proper karakter setove, kolacije ... kako myisam nije acid ...
kakve to veze ima ..


pazi, ja radim za mysql ali privatno koristim i psql i mysql podjednako
(cak stavise malo vise psql) i isto tako mogu da ti kazem da

 - psql - kolacije i karakter setovi - neupotrebljivo (na mysql 5.x to
radi vrhunski)

 - psql - replikacija - neupotrebljivo (na mysql-u to radi vrhunski od
uvek)

 - psql - bilo kakav realan HA - neupotrebljivo (za mysql imas group
replication, innodb cluster, mysql ndbcluster, galera ... resenja koja
koriste telekomi, banke, sistemi koji u slucaju pada sistema gube
milione na minut)

 - psql - biz analitika - neupotrebljivo (za mysql na resenje postoji
sa RAPID engine-om koji je na zalost dostupan samo na oracle cloud
verziji mysql-a)

tako da .. svaki ima svoje prednosti i mane, a ako ce vadimo stare
verzije nijedan nije ni za .!. :D


ono sto je ozbiljan mysql drawback list u poredjenju sa psql danas je

 - optimizer je i dalje losiji nego psql-ov (na ovome se intenzivno radi )

 - stored procedure su rudimentarne (na ovome se ne radi uopste jer je
ideja da mysql ne treba da bude app server vec rdbms, ako oces app
server uzmes oracle db)

i to je "big deal" .. sve ostalo je vise manje sio mi ga djura
 
Odgovor na temu

BuzzLightyear

Član broj: 345017
Poruke: 71



+432 Profil

icon Re: MySql nakon Postgresql-a (rant)26.11.2020. u 21:20 - pre 40 meseci
Citat:
CTE - da, tek od 8, ali kakve to veze ima, pa neces u 2020 godini da koristis 5.x ?!


Da mogu da biram ne bih ni pokrenuo rant :) Radi se o izveštaju iz nekog starog sistema.

Citat:

sp - kako mislis ne moze ? i kakve veze ima stored procedura sa select sintaksom?!


Ne može select * from call moja_procedura(p1,p2)

Dovoljno je bilo da sam samo napisao funkcije ne mogu da vrate tabelu. Da li postoji elegantno rešenje za ovo? Ja sam rešio procedurama koje kreiraju privremene tabele.

Citat:
temp tabele, nisam siguran da kapiram o kom limitu pricas, o


Code:
mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'


Dodao bih i poruke o greškama. Uglavnom su neinformativne i besmislene.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)26.11.2020. u 22:08 - pre 40 meseci
da svasta na 5.x fali .. jbg .. sto vise unazad ides, fali vise stvari
.. ali relativno je lako odraditi upgrade :D

elem,

> select * from repeat('moze', 1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near 'repeat('moze', 1)' at line 1
> select * from (select repeat('moze', 1)) x;
+-------------------+
| repeat('moze', 1) |
+-------------------+
| moze              |
+-------------------+
1 row in set (0.00 sec)

tako da rezultat funkcije mozes da iskoristis relativno lako, no problem
je sto rezultat funkcije ne moze da bude tabela

ah ovo sa temp_table je pos@#$%%^@$^ni limit koji nikako da se resi :(
... vec 10 godina slusam kako ce "biti uskoro" :(

https://dev.mysql.com/doc/refm.../temporary-table-problems.html

na ovom linku imas workaround ali radi samo na 8.0 :(

ja imam to reseno na jednom mestu na "glup" nacin, probacu da iskopam da
dignem ovde source, ali ako se dobro secam sp proveri da li postoji
tabela (prava), ako postoji throwne gresku, ako ne postoji napravi je,
napuni je i izadje i app posle koriscenja te tabele istu brise, znaci ne
brise se sama od sebe ako se diskonektujes... meni to radi posao zato
sto tu proceduru radim jednom u par meseci i uvek se radi iz jednog
treda i nema sanse da se desi da se duplicira a samim tim sto proveravam
dal tabela postoji sprecavam slucaj da u slucaju da neko ko ne zna oce
mu se radi proba da odradi stvar dok je proces u toku ne bude nista...
ne znam dal tako nesto mozes da implementiras ili ne..

e sada, na osmici mozes da zaobidjes problem sa JSON-om posto funkcija
moze da vrati json


EDIT: pojeo ES mail pa moram da izeditujem kroz web interface
Code:


DELIMITER $$

CREATE FUNCTION fja(
    a char(10),
    b int(8)
)
RETURNS json
DETERMINISTIC
BEGIN
    DECLARE counter INT DEFAULT 1;

    WHILE counter <= b DO
        -- ovde napunis json
        SET counter = counter + 1;

    END WHILE;
    RETURN '[{"a":"3"},{"a":2},{"b":1},{"a":0},{"a":[1,2]}]';

END $$

DELIMITER ;


SELECT * FROM JSON_TABLE(
  fja('a',1),
  "$[*]" COLUMNS(
  rowid FOR ORDINALITY,
  ac VARCHAR(100) PATH "$.a" DEFAULT '111' ON EMPTY DEFAULT '999' ON ERROR,
  aj JSON PATH "$.a" DEFAULT '{"x": 333}' ON EMPTY,
  bx INT EXISTS PATH "$.b"
)) AS tt;



na primer

Code:


 > SELECT * FROM JSON_TABLE(
    ->   fja('a',1),
    ->   "$[*]" COLUMNS(
    ->   rowid FOR ORDINALITY,
    ->   ac VARCHAR(100) PATH "$.a" DEFAULT '111' ON EMPTY DEFAULT '999' ON ERROR,
    ->   aj JSON PATH "$.a" DEFAULT '{"x": 333}' ON EMPTY,
    ->   bx INT EXISTS PATH "$.b"
    -> )) AS tt;
+-------+------+------------+------+
| rowid | ac   | aj         | bx   |
+-------+------+------------+------+
|     1 | 3    | "3"        |    0 |
|     2 | 2    | 2          |    0 |
|     3 | 111  | {"x": 333} |    1 |
|     4 | 0    | 0          |    0 |
|     5 | 999  | [1, 2]     |    0 |
+-------+------+------------+------+
5 rows in set (0.00 sec)



 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)26.11.2020. u 23:18 - pre 40 meseci
evo ti primer kako tu majmu... da izvedes da zaobidjes mysql issue

Code:


CREATE TABLE `t` (
  `a` varchar(10) DEFAULT NULL,
  `b` varchar(10) DEFAULT NULL,
  `i` int DEFAULT NULL
);

INSERT INTO t VALUES ('ddas','das', 3), ('das','dsa', 4), ('das','das', 5);
INSERT INTO t VALUES ('ddas','das', 6), ('das','dsa', 7), ('das','das', 8);

DROP FUNCTION IF EXISTS f2;
DELIMITER $$
CREATE FUNCTION f2()
RETURNS json
DETERMINISTIC
BEGIN
    DECLARE done TINYINT DEFAULT FALSE;
    DECLARE keetah json;
    DECLARE j json;
    
    DECLARE c1 CURSOR FOR SELECT JSON_OBJECT('a', a, 'b', b, 'i', i)  FROM t;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    SET keetah = '[{"a": null, "b": null, "i": null}]';

    OPEN c1;

l:
    LOOP    
      FETCH NEXT FROM c1 INTO j;
  
      IF done THEN 
        LEAVE l; 
      ELSE
    
        SELECT JSON_ARRAY_APPEND(keetah, '$[0]', j) INTO keetah;
    
      END IF;
    END LOOP;      
    CLOSE c1;
    
    RETURN keetah;
END $$
DELIMITER ;


SELECT * FROM JSON_TABLE(f2(), 
  '$[*]' COLUMNS (
    NESTED PATH '$[*]' COLUMNS ( a varchar(10) PATH "$.a", b varchar(10) PATH "$.b", i int PATH "$.i")
  ) 
) yyy;




npr:
Code:

> SELECT * FROM JSON_TABLE(f2(),
    ->   '$[*]' COLUMNS (
    ->     NESTED PATH '$[*]' COLUMNS ( a varchar(10) PATH "$.a", b varchar(10) PATH "$.b", i int PATH "$.i")
    ->   )
    -> ) yyy;
+------+------+------+
| a    | b    | i    |
+------+------+------+
| NULL | NULL | NULL |
| ddas | das  |    3 |
| das  | dsa  |    4 |
| das  | das  |    5 |
| ddas | das  |    6 |
| das  | dsa  |    7 |
| das  | das  |    8 |
+------+------+------+
7 rows in set (0.00 sec)


(mozes umesto da inicijalizujes ono sa null da bi izbegao taj null row viska da inicijalizujes sa "prvim" pa da dopunis json dalje ali generalno kontas ideju .. )
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 09:00 - pre 40 meseci
Ja sam stekao utisak da je covek navikao na PL/SQL-like sisteme ... nek me ispravi ako gresim. Bukvalno su mu pitanja koja sam vec cuo da se ljudi zale koji su radili na slican nacin. Znam bar za jedan slucaj da su na kraju, za web projekat, ipak isli na Oracle bazu (Oracle XE, tad im je bilo dosta 1GB date), jer im je bilo lakse nego da promene developere (bilo promene kao zaposle nove ili promene tipa nauce ih nove stvari), a znam nekoliko njih koji su isli na PostgreSQL jer su navikli na taj nacin pravljenja arhitekture (DB heavy, in-database logika...).
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

BuzzLightyear

Član broj: 345017
Poruke: 71



+432 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 09:23 - pre 40 meseci
Citat:
Ja sam stekao utisak da je covek navikao na PL/SQL-like sisteme


U pravu si, napisao sam to i u naslovu teme.


Hvala Bogdane na detaljnom odgovoru.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 09:32 - pre 40 meseci
a vidi, meni je interesantno bilo da vidim kako bi izgledalo ovo sa
tabela -> json -> tabela pa sam napravio primer .. a ko sto rekoh mysql
nikad nije zamisljen kao app server, oracle ima svoj app server i
sigurno nece od mysql-a praviti app server, ako ti treba app server i
biznis logika u bazi oracle ima svoje resenje(a), foss nudi svoja
resenja .. mysql to nije niti ce ikad biti
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 10:49 - pre 40 meseci
Uvek je bolno kada logiku rada na jednoj bazi pokušaš da dobiješ sa drugom bazom.
Meni je uvek bilo neshvatljivo da neko kao prednost softvera navodi da je portabilan na više baza.
To je možda zgodno kada kupuješ aplikaciju sa bazom i samo ta aplikacija ide na bazu.
Onako kako ja čitam, to mi znači "naš softver radi podjednako loše sa svakom bazom".

Recimo, moja firma je bila dovoljno blesava da kaže da softver radi i na Standard Edition i na Enterprise Edition Oracle bazi.
Onda nam je najveći klijenta rekao, to je super, ali mi smo dali velike pare na Enterprise i želimo da radi bolje nego na Standard.
Sva sreća, bar kod Oracle baze, sa developerske strane se više te dve edicije (skoro) ne razlikuju. Razlika dolazi do izražaja tek na DBA nivou.

Sada, međutim, imam situaciju da imam heterogeno okruženje, SQL Server i Oracle DB i stalno uviđam koliko loših odluka je tim koji je razvijao aplikaciju doneo kada je logiku SQL Servera hteo da primeni na Oracle strani.

EDIT: Uzgred, pošto je SQL Server strana rađena, pa skoro da bude portabilna na više baza, na SQL Server strani aplikacije imam 3 puta više hardverskih resursa sa 10 puta manjom bazom, ali zato 5 puta slabije performanse.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 10:57 - pre 40 meseci
@djoka, vidi, kada neko kaze da sw radi dobro sa svakom bazom to u 99%
slucajeva znaci da se biz lokiga nalazi u aplikaciji a ne u bazi. Ja sam
inace pobornik toga, od uvek, da biz logika bude u aplikaciji a ne u
bazi... baza treba da cuva/isporucuje datu i treba da cuva
ref.integritet .. i to danas skoro svi rdbms mogu da obezbede.... a
razlike u sintaksi su toliko minimalne danas da nije problem da podrzis
sve njih u istom kodu.. problem nastaje samo ako zelis da gurnes biz
logiku u bazu i koristis u stvari application server a ne rdbms ... u
tom slucaju mysql prosto nije resenje, mysql nije appserver ... psql
jeste, oracledb jeste, m$sql jeste ..
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 11:18 - pre 40 meseci
Nije samo do stored procedura, problem je i ako samo koristiš SQL.
Recimo, gomila upita ima hintove, koje pomažu Oraclu da izabere execution plan.
Sada, hintovi ne smetaju drugoj bazi, oni su pod komentarom, ali to definitvno znači da moraš da prođeš kroz svaki upit koji je napravi ORM i da ručno dodaješ hintove, pa prilikom sledeće iteracije te hintove izgubiš.
A da ne pričam da se gomila funkcija ne nalazi na jednoj ili drugoj bazi.

Drugo, SQL Server programeri mnoooogo vole da koriste temporary tabele. Potupuno nepotrebno na Oracle strani.

Treće SQL Server programeri mnogo vole da im procedura vrati record set, a to Oracle procedure ne rade. Ono, mogu da rade sa PIPE ROW, ali ubija performanse.

Sa druge strane, Oracle voli da vrati REF CURSOR, a SQL Server programeri se samo češu na to.

Onda, neko je smislio da je dobra ideja da se Oracle baza gađa preko JDBC/ODBC, ali Oracle mnogo više voli da se gađa preko SQL*Net-a i da za pristup bazi koristiš OCI pozive, a ne kilavi JDBC/ODBC
 
Odgovor na temu

BuzzLightyear

Član broj: 345017
Poruke: 71



+432 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 11:27 - pre 40 meseci
U mom konkretnom slučaju cela baza je u jednoj tabeli. Pošto su podaci nenenormalizovani cilj mi je bio da napravim funkcije i poglede koje bih prezentovao aplikaciji. Nisam ja projektovao bazu, ne nalazi se na mom serveru, dobijam samo parametre za pristup. Rešio sam problem preko privremenih tabela, samo sve mi je nekako sklepano. Moj utisak je da je Postgresql mnogo više "developer friendly", mada znam da i Postgresql ima svojih problema.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 11:48 - pre 40 meseci
@djoka sa previse stvari u ovome sto si napisao se ne slazem da bi imalo
smisla komentarisati detaljno ali neki generalni odgovor...

 - ako koristis ORM (fuj, bljak, $^%#%#$^$#) pustis orm da hendla
razlicite upite ka razlicitim bazama na razliciti nacin

 - sve ovo ostalo opet pricas o app serveru, ako koristis app server tu
"portability" ne postoji ... prebacivanje sa jedne na drugu bazu je pita
i uvek ce biti pita uz sve alate i kompatibilnosti koje postoje .. psql
se mega trudi da omoguci "lakse" prelazenje sa oracledb na psql (i ne
ide im lose), marija se cima do jaja da omoguci prelazenje sa oracledb i
m$sql na mariju (smeh i tuga) ... mysql je skroz u fazonu - mi ovo sto
radimo radimo do jaja, ako vam to treba bolje nema, ako vam treba nesto
drugo imamo mi i druge proizvode koji nisu mysql .. ali realno svi
veliki igraci se trude da te zakljucaju sto vise mogu (oracledb, db2,
informix...) da ne mozes tako lako da predjes nigde .. tj. da te
prelazak na drugi sistem kosta vise nego licenca za postojeci

u slucaju op-a nije pitanje generalno dal nesto radi ili ne radi i dal
se nesto prebacuje sa X na Y nego je dosao covek koji radi na jedan
nacin na jednom sistemu i dali su mu da odradi nesto na drugom sistemu
gde se stvari rade drugacije, ono na sta je navikao ne radi a ono kako
bi se to uradilo drugacije ne ume jer nikad nije morao tako da radi i
sad je problem kako vozaca mega do jaja nadrkanog kamiona tipa Navistar
LoneStar gurnuti u nascar vozilo tipa  toyota camry .. jeste ima i volan
i tockove (14 komada manje nego sto je navikao) i menjac (sa manje
brzina nego sto je navikao) i fali mnogo dugmica i prekidaca na koje je
navikao .. oba idu preko 200km/h ...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 12:02 - pre 40 meseci
@buzz, u tvom slucaju bazu je pravio neki demon cije ime ne smemo
izgovoriti ne vratio se nikad :D ... ti si na123 abitno dal ti je ta
"baza" u mysql-u, psql-u, oracledb, db2 ili mongo/kasandra/flat text
file formatu ... na zalost ne postoji pravilan nacin da se resi taj
problem :( osim da se sistem redizajnira kako treba... ja sam imao par
puta priliku da me zovu da vadim iz.. takve projekte ali "bez redizajna"
nego bas to sto sad ti radis ali, fala .!., ja sam mogao da dozvolim
sebi da im pokazem srednji i kazem necu igram igru koja je unapred
izgubljena... opet, da nisam imao u tom trenutku posla jbg radio bi sta
se mora kinta je kinta, racuni dolaze svaki mesec ne pitaju dal je bilo
posla...

psql/mysql iskreno, dev friendly, nije nijedan :( .. oba su retar... i
fali im puno toga .. mysql ima mnogo veci community te je do nekih
odgovora lakse doci ali opet taj veci community generise mnoooogo suma
tako da je potrebno vreme iskopati pravi odgovor u sumi sra... takodje
mysql support od orakla kida milu majku a kosta relativno smesno para,
tako nesto za psql ne postoji ni za 10x vise kinte .. mysql ima mnogo
vise free i mnogo vise paid alata dostupnih .. sad ono, uglavnom ti
treba jedan tako da to sto postoji milion za mysql i 100k za psql i nije
neko veliko m000do al opet ..

a rad u njima ... totalni uzas i jedan i drugi .. ono gde psql sija su
stored procedure, na zalost ni on nema valjani nacin za debagovanje
istih, i optimizer za orm generisanje kilobajtne upite ... ovo prvo je
velika stvar (razlog zasto ja brdo mojih projekata radim u psql, evo
upravo smo poceli novi projekat kao bad-team, nesto sto smo pre 6 godina
pravili u kombo mysql+mongo sada pravimo sa psql-om, preturio sam ovih
dana par stotina tabela i par giga date iz mysql-a u psql, sad pisem
neki app da ovo #$^^%#^ iz monga isto prebacim u psql) tako da .. sp,
baratanje json-om .. psql ftw ... mysql u v8 navodno podrzava vise
stvari od sql standarda (neke cte stvari) i vise funkcija sa jsonom nego
psql, ali meni je psql tu i dalje "logicniji" .... sto se ove druge
prednosti psql-a tice, bolje hendlanje %^#$^% upita, iskreno, ko koristi
te upite ni bog ne moze da mu pomogne tako da ... nebitno :D ... ono sto
mogu da kazem je da moje iskustvo sa dba/dbd koji su odrasli sa psql-om
kaze da isti znaju mnogo manje o dizajniranju baza nego dba/dbd koji su
odrasli uz mysql ... a i jedni i drugi su mala deca u odnosu na one koji
su odrasli uz oracledb i db2 ... no strasna stvar je sto kad pogledas
dobar deo psql baza indexi fale svuda :( ...

elem, tebi nek je bog upomoc .. ti izgleda ne treba da uradis jedan
report iz tog smeca vec moras da napravis neki paralelni sistem koji ce
da radi sa tim smecem .. uzas, ne bi ti bio u kozi :(
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 12:25 - pre 40 meseci
Da se ne shvati pogrešno, ja volim da radim u MySql-u. Jbg, nema gomilu stvari na koje sam navikao na Oracle ili pg, ali kad prihvatiš ograničenja, lepo vozi.
Još kad uzmeš koliko si para platio, radi i više nego dobro.

Međutim, insistiranje da logika treba da bude na strani app ne u bazi, u mnogo slučajeva ne pije vodu.
Banalan primer, uzmi slučaj da treba da napraviš neku statističku analizu, razlika je da li ćeš da prebaciš preko mreže 100.000 slogova sa baze na app server, ili ćeš tih 100.000 slogova da odradiš u stored proceduri i vratiti 10 linija rezultata.

Ono što je klasična boljka je da se ne radi, u praksi, dovoljna separacija slojeva.
Realan slučaj, pukne ti insert u Oracle bazu, insert pokuša upis null u not null polje. Uzmeš da debaguješ, nađeš da ti je prethodni sloj poslao slog koji sadrži u svim poljima null. Vratiš se još jedan korak i nađeš roman od exception stacka da je neuspela konverzija u int. Vratiš se još jedan sloj i vidiš da je idiot od programera stavio na formu input polje, gde se očekuje numeric a jbn korisnik je uneo slovo.

Programer nije napravio kontrolu unosa po tipu podatka. Bezvezni podatak je prosledio sledećem sloju, koji, takođe, nije proverio ulaz, on sledećoj proceduri ... pa tako 50 nivoa dok neko nije pozvao konverziju u int. Onda je lepo bibliotečka procedura pukla, programer je uredno uneo u log exception stack, a zatim potpuno ignorisao exception, nego je slog sa neinicijalizovanim varijablama poslao dalje.

Zato ja volim da svoju Oracle bazu "ogradim" gomilom stored procedura, zato što znam da imam programere koji nisu bolji od treniranih majmuna.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 12:36 - pre 40 meseci
@djoka, ne kazem ja da nikad ne valja da se kroisti biznis logika na
strani baze, samo kazem da kad je to potrebno (ili cak i ako je
nepotrebno ali je tako odluceno iz bilo kog razloga), mysql nije idealan
alat za rad

"velika separacija slojeva" je kao i "agile sistem" i mnogo sta moderna
buda...stina... da ne ulazimo sada u detalje ima vise nego dovoljno
analiza toga zadnje dve tri godine kada se dovoljno ljudi opeklo, raditi
bilo sta na silu zato sto "tako pise u nekoj knjizi" je .... primer koji
si dao nije problem separacija slojeva nego lenstine koje ne rade
kontrolu greske i kontrolu date ... vec je "u apiju pise da uvek vraca i
ja ocekujem da UVEK vraca" .. i slicni junoski stavovi koji se onda u
manjku kvalitetnog kadra promovisu u seniore bez realnog znanja i
iskustva i onda imamo "seniore" koji pisu takav kod ... nikakva
separacija tu ne pomaze vec 10% pa 20% pa otkaz jbg ..
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 12:53 - pre 40 meseci
@djoka_l, mozda je vreme da menjas programere :)
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 12:54 - pre 40 meseci
Citat:
djoka_l:
Međutim, insistiranje da logika treba da bude na strani app ne u bazi, u mnogo slučajeva ne pije vodu.
Banalan primer, uzmi slučaj da treba da napraviš neku statističku analizu, razlika je da li ćeš da prebaciš preko mreže 100.000 slogova sa baze na app server, ili ćeš tih 100.000 slogova da odradiš u stored proceduri i vratiti 10 linija rezultata.

Imao bukvalno ovaj slucaj: PHP, Laravel framework, Eloquent ORM. Djubre. Treba da napravi upit koji je realno JOIN, on umesto 10 redova vrati dva puta po 100,000 jer ucita obe table u aplikaciju i onda radi in-app join. :)

Resenje: Izmeni se ta jedna klasa, napise se jedan upit rucno, kroz PDO. Jedan dan posla, senior developer i ja, imali smo vremena i za rucak i za 2h u workbenchu da odradimo optimizaciju join-a, pregledamo explainove, sve.... Smanjilo zauzece memorije sa, u tom trenutku doslo do 400MB na pristojnih 30MB, ubrzalo izvrsavanje sa 40s na 0,3s.

Alternativa: Napise se view, koji sadrzi taj join i ucita to kroz ORM. Ovo sam pravio sa neki Yii projekat pre par godina, kad je, zbog prirode radne snage, moralo da se to radi kroz ORM. Bio je deo koji samo cita, nista ne pise.

U oba slucaja je i dalje in-applicaiton logika, ali se ne drzis toga kao pijan plota vec koristis mozak i, tamo gde treba, optimizujes. Nije in-application logika isto sto i "koristi ORM", stavise.
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: MySql nakon Postgresql-a (rant)27.11.2020. u 13:23 - pre 40 meseci
https://www.youtube.com/watch?v=ecIWPzGEbFc&t=51m00s

Pa sada vidi šta da radiš sa radnog snagom u kojoj 50% ima manje od 5 godina iskustva...
 
Odgovor na temu

[es] :: MySQL :: MySql nakon Postgresql-a (rant)

Strane: 1 2

[ Pregleda: 3532 | Odgovora: 39 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.