Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Ondrej Nemecek

Stran: 1 ... 12 13 [14] 15 16 ... 90
196
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 25. 04. 2021, 01:42:30 »
Kód: [Vybrat]
let obj = ... // fetch somehow an object
remoteChannel <- obj
for i in range(0, obj.size) { ... }
A teď mi příjemce na druhé straně síťového kanálu změní size (řekněme, že hodnotu zmenší). Co se stane s tím for-cyklem?

Jako že za běhu cyklu změní size použitý v podmínce cyklu? Stane se IMHO to stejné jako pokud na tu size sáhnu z jiného vlákna?

197
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 25. 04. 2021, 01:06:26 »
Jde o styl uvažování. Dneska, díky okolnostem, je ten způsob uvažování následující:
- vytáhni z persistence
- uprav
- ulož zpět do persistence

Což je naprosto umělé. A správně by to mělo být:
- najdi v poli [1] požadovaný záznam
- uprav v něm co potřebuješ

Případně, pokud chci transakčnost, tak:
- začni atomický blok
- najdi v poli požadovaný záznam
- uprav v něm co potřebuješ
- commit

Transakce je v pohodě, o tom není řeč. Co považuji za umělé je to vytahování odněkud a pak to tam opět vracení.


1/ úplně obyčejném, nespeciálním, v žádném ORM nasledovaném

Jo, to se mi líbí. Tak ještě jak implementovat ten commit? Tím se ta Kitova špinavá cache přesune do ... transakčního manažera? A ten si udělá tu dočasnou kopii?

198
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 25. 04. 2021, 00:23:48 »
Typicky chci načíst objekt, nějak ho měnit, validovat a až nakonec naráz uložit.
To je ta chyba v uvažování. Nechci ten objekt načíst, chci ho jen změnit.

Dobře, tak ho už mám, změní se v uvažování něco? V podstatě můžu spouštět vlákna ve stejném procesu, pracovat nad stejnou pamětí, ale lze to nazvat databází? Ale bude to asi nejpodobnější tomu Smalltalku.

199
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 25. 04. 2021, 00:15:54 »
Takže když změním instanci objektu z jednoho procesu, co uvidí druhý proces (co by sdílel stejný stav)? Uvidí hned změnu, sdílejí stejnou instanci?
Uvidí změnněnou hodnotu toho objektu. Když změním třeba Person.name = "Jozef", uvidí taky "Jozef". Když přidám, nebo odeberu prvek z kolekce, přidá se či odebere i u toho druhého. (Případně ve všech ostatních.)

A to takhle někde jde? A není to náhodou to stejné jako když se dva klienti připojují do SQL? Taky vidí stejné hodnoty... ...až na ty okolnosti při různém transaction isolation levels. Ale pokud uvažujeme úplně netransakčně -  kdo přijde, ten čte/mění - tam můžu sdílet paměť a při každé změně objektu tam zapsat novou hodnotu a při každém dotazu ji zase číst. A třeba může být ten zápis mezi klienty synchronizovaný (takže zapisovat budou vždy jeden po druhém, nikdy současně) Neuvažuju teď změny třídy jako takové, řekněme že se jejich definice za běhu nemění a mění se jen její fieldy (datové položky - třídní proměnné). Tak takový systém určitě bude fungovat. Ale zase k čemu vlastně bude? Typicky chci načíst objekt, nějak ho měnit, validovat a až nakonec naráz uložit. Pokud to bude dělat vše hned naživo, nechám ho v rozdrbaném stavu. Chtěl jsem takhle nějak použít ZooDB a došel jsem k tomu, že to asi nechci. Teda ještě si můžu objekt naklonovat, udělat změny, validovat a pak promítnout do původní instance. Ale to už jsme u toho attachování, které jsme vlastně nechtěli. Čili při běžném aplikačním programování se skrytě obvykle uvažují cca dvě verze instance - před změnou a po změně. Je to důsledek SQL/ORM architektury nebo obecný problém? Třeba active record pattern v ebean.io nemá attach/detach sémantiku (jede v jediné persistentní session, kterou asi ani neumí opustit), ale save() tam má. A ten si nedokážu představit bez řešení kolizí a bez transakčnosti, kterou naopak ebean.io má. Takže v praxi se podle mě naráží na stejné problémy, které mi přijdou jako obecné problémy při sdílení stavu mezi více procesy. Ale jeden benefit by tam u objektové databáze byt - absence mapování. Pokud by tam byly všechna ta synchronizační bižuterie okolo a pracovalo se přímo s object graphem bez ORM mappingu, bylo by to to co asi hledám.

200
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 24. 04. 2021, 23:13:52 »
nějakému distribuovanému systému s mapováním, řešením verzí, kolizí, s attache a detached persistentním stavem atd., tedy vše co se řeší v SQL příp. ORM.
Tak přesně takto to není. Vše, co jsi uvedl je problematika čistě toho našeho nám známého řešení. A ani náhodou to není univerzální problematika. Snad jedině řešení kolizí stojí za úvahu.

Takže když změním instanci objektu z jednoho procesu, co uvidí druhý proces (co by sdílel stejný stav)? Uvidí hned změnu, sdílejí stejnou instanci? PS: Jasně, SQL je taky způsob jak sdílet stav, ale otázka asi zněla zda to jde nějak víc napřímo.

201
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 24. 04. 2021, 19:55:59 »
Kromě Smalltalku ;)
Smalltalk určitě můžeme považovat za výjimku potvrzující pravidlo.

Jen pro pořádek, setkal jsi se s řešením více instancí jednoho image, tedy tak, aby sdíleli stejný stav, ideálně i napříč sítí?
Ne, v praxi nesetkal.

Což je IMHO omezení toho konceptu. Sdílená paměť sice není problém, ale problém je asi distribuce změn. Protože dělat to celé synchronizované by byl výkonnostní nesmysl. A bez okamžité synchronizace se zas dojde k nějakému distribuovanému systému s mapováním, řešením verzí, kolizí, s attache a detached persistentním stavem atd., tedy vše co se řeší v SQL příp. ORM.

202
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 24. 04. 2021, 15:07:17 »
Překvapivě nejčistší to mají funkcionální jazyky. Tam je jasně by design oddělený stav a logika, a tak není problém ten stav frknout do databáze, a všichni vědí.

Logické jazyky ještě víc, tam je program DB + pravidla :)

Zatímco u objektových jazyků furt cítím (na základě projektů se kterými jsem dělal i diskusí, které jsem vedl) děsnou schízu a neujasněnost.
Kromě Smalltalku ;)
No a jsme u toho. Pro spoustu malých projektů by stačil přístup Smalltalku.
To se taky moc nechytlo  :-\

Hlavně se nechytla Gemstone database, což je škoda.

Což je ale IMHO dáno historickým kontextem.

Používal jste někdo Gemstone?

203
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 24. 04. 2021, 15:02:54 »
Co se tyce objektovych databazi tak podle me jsou docela rozsirene. Napr. kdyz delam mobilni appku a potrebuju nejakou persistenci objektu na strane klienta, tak sahnu po https://realm.io/.
Já teda vidím, realm.io jako ORMko do MongoDB. Koukám se špatně?

Realm is a mobile database: a replacement for SQLite & ORMs

https://github.com/realm/realm-core
https://github.com/realm/realm-java

Tohle se necha pouzivat zadarmo a dal jsem nikdy nesel. To s tim MongoDB je ohledne sync. dat mezi clientem <> serverem a okolo toho maji postaveny biznis.

Vypadá to, že to je orientované na Android, protože:

Citace
Java version of Realm currently runs only on Android
https://github.com/realm/realm-java

204
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 24. 04. 2021, 14:56:04 »
Překvapivě nejčistší to mají funkcionální jazyky. Tam je jasně by design oddělený stav a logika, a tak není problém ten stav frknout do databáze, a všichni vědí.

Logické jazyky ještě víc, tam je program DB + pravidla :)

Zatímco u objektových jazyků furt cítím (na základě projektů se kterými jsem dělal i diskusí, které jsem vedl) děsnou schízu a neujasněnost.
Kromě Smalltalku ;)

No a jsme u toho. Pro spoustu malých projektů by stačil přístup Smalltalku.

205
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 23. 04. 2021, 20:43:44 »
...a to je mi právě záhada, proč se více neuchytily a nerozšířily objektové databáze.
Kdysi jsem se bavil s autorem db4objects (C. Rosenberger). Hlavní problém je v neflexibilnosti tzv. OO jazyků. On zápasil s Javou (a portem pro C#, pro ten si napsal transpiler z Javy), dnes by to pro Rust, Swift nebo Go bylo ještě horší.
Když si vezmu třeba něco takového: https://crates.io/crates/diesel, což je ještě implementace, která se mi líbí, tak jsem skončil u toho, že takto to dělat nechci. Není to správně OOP.

Jak souvisí Diesel v Rustu s objektovými databázemi? Mě šlo o to že objektové databáze by byly lepší než NoSQL, kde je stále to zavádějící to mapování.

206
Sítě / Re:Stav 2G sítí v českých krajích
« kdy: 23. 04. 2021, 15:14:14 »
Výhoda je, že podle všeho má 2G skutečně lepší signál. Bydlím prakticky mimo signál a moderní chytré telefony s podporou LTE apod. se vůbec nechytají, starší telefony nebo telefony přepnuté na 2G jsou na tom mnohem lépe.

Ale budoucnost pro sensory je asi opravdu SIGFOX, LoRaWan, NB-IoT (pomalu se to vyvíjí, je potřeba zjistit odlišnosti, aktuální stav služeb a ceny).

Pak je taky možné použít obyčejné rádio 433MHz (dosah přes kilometr) anebo ESP32 a normální wifi (se směrovou anténou dosah v řádku km) - poslat si data na nějakou gateway odkud to už pošlete kam potřebujete. Jsou i lepší moduly s dosahem třeba 10km, ale vše záleží co od toho potřebujete.

207
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 22. 04. 2021, 17:16:58 »
že existují lidi, co se snaží kladivem zatlouct šroubky, a "ze své vlastní zkušenosti" pak šíří, jak jsou ty šroubky nesmyslná technologie.
Jako profesně bývalej truhlář musím poznamenat, že šroubky se kladivem zatloukají naprosto v pohodě ;-)

Nás to tak učili na základce a to si nedělám srandu! Myslel jsem tehdy, že umřu - můj tatínek byl (mimo jiné) jemný mechanik a pracoval v letecké prototypové dílně - zatímco soudružka učitelka zatloukala vruty kladívkem, uf! Pak mi ještě utkvěly takové ty umělohmotné šuplery, které byly pružné, takže když člověk dorazil naměřil +- 0.5mm. Inu, totalita.

208
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 22. 04. 2021, 15:36:42 »
Ondra:
Citace
IMHO v dlouhodobějším horizontu pracnost+nákladovost srovnatelných technologií konvertuje k podobné hodnotě.
Toto myslím není úplně přesně řečeno. Jsou jednoduché projekty, které se do tohoto stavu niky nedostanou a noSQL tam bude o něco rychlejší (o definici tabulek). A jsou projekty, které jsou tak složité, že když je někdo založí na jednoduchých technologiích, spláče nad vejdělkem.

Samozřejmě souhlas.

209
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 21. 04. 2021, 20:07:34 »
Jak jsem se poprvé dozvěděl o MongoDB? Bylo to asi v roce 2016 a vedoucí projektu řekl "Na blbnutí s SQL nemáme čas!" Zákazník očekával rozběhnutí projektu prakticky hned. Než jsem si to osahal, myslel jsem si, že se zbláznil. Ale vývoj produktu - oproti jiným projektům - doslova uháněl. A to se zadání v průběhu projektu měnilo, jak se zákazník vyspal. S NoSQL se člověk nesoustředí na "vyšpekulování krutopřísného Joinu", ale hloubá nad svým objektem, aby lumpík dělal, co dělat má.

Představa, že Vám něco zázračně ušetří práci, je podle mě mylná. IMHO v dlouhodobějším horizontu pracnost+nákladovost srovnatelných technologií konvertuje k podobné hodnotě. Co ušetříte v denormalizaci, objeví se časem v nárocích na aplikační kód, výkon hardware nebo údržbu. Což zde bylo už opakovaně řečeno. Jinak nic proti nadšení z NoSQL, ale každé nadšení časem vyprchá a sedne si a člověk pozná limity.

Jinak Pavla Stěhule považuju za odborníka se značným rozhledem a zkušenostmi a přijde mi nesmysl obírat ho o čas nějakou neplodnou polemikou...

210
Server / Re:MariaDB vs Postgres vs SQL Server
« kdy: 20. 04. 2021, 19:24:20 »
Vinit z těch nešvarů SQL nedává smysl. Je to obecný jev napříč všemi technologiemi a ani super přímočaré a jednoduché koncepty to nezlepšují (např. JSON se používá protože je tak jednoduchý a každý ho pochopí - ale že má nějaká omezení, které přinesou problémy a odloženou pracnost, to si řada lidí neuvědomí).

Ve skutečnosti je to prostě projev změněných poměrů - jiné množství programátorů, jiný poměr počtu lidí vs. počtu počítačů, jiný rozsah kódu atd. atd.

Asi to lze řešit na osobní úrovni - kdo chce pracovat s kvalitním kódem, musí se probojovat do nejlepších kruhů, kde se děje něco zajímavého nebo běží nějaký výzkum. Jinak plave v kompromisech, které ale na druhou stranu na řadu věcí stačí a pracovat tímto stylem taky není ostuda, alespoň pokud se k nim člověk přiklání vědomě.

Jako třeba ten příklad s taháním celých dat, abych použil jedno číslo - to zase není rozhodnutí jednoho programátora, jde o množství kódu, použitý framework (často ORM, které má přinejlepším nějaký lazy loading) takže nakonec se programátor rozhoduje zda napíše nové sql dotazy (které bude muset navíc obhájit) nebo použije existující otestovaný kód pro uložení celé beany. Prostě - kompromis.

Stran: 1 ... 12 13 [14] 15 16 ... 90