Když jsem si nastudoval implementaci J, K, Q/KDB+ tak mi tohle přijde naprosto obludné. Místo nějaké minimalistické inženířiny se tu zjeví obludné repo v Javě. Nevím, ale mám pocit, že když se něco objeví pod hlavičkou Apache, tak je to nějaký ztracený projekt.
5. 12. 2022, 19:33 editováno autorem komentáře
prave naopak, ale to je velice na dlho :) Java je na taketo projekty najvyhodnejsia, s nejakym hrackarskym go s pythonom kavlitny projekt takehoto typu nespravis
go je hackerské... Až tak hackerské že je nejpoužívanější ve světě kontejnerizace (docker, kubernetes a vše kolem), stojí za ním jedna z nějvětších tech-firem (ať se to někomu líbí nebo ne) a používají ho poměrně dost velké tech-firmy ;-)
5. 12. 2022, 23:57 editováno autorem komentáře
go je tak hekreske,ze vetsina embeded databazaz v nom napisanych na gihube je uz mrtva, alebo sa len jedna o wraper nad LevelDb.
Máš k tomu i tvrdá čísla nebo jen dojem?
Nevím, co myslíš tím embedded databází, což je v podstatě i hash mapa v základní knihovně, IoTDB také není embedded a stejně velká část embedded použije něco jako sqlite, leveldb, rocksdb. Přímo v go je třeba genji, taky pár let žije.
Stejné tvrzení mohu říct i o javě, C či čemkoliv jiném, většina (na počet) projektů nepřežije delší dobu, nezáleží na jazyku.
Zrovna třeba Prometheus, Victoriametrics, InfluxDB jsou v go, řeší to stejné jako IoTDB a žijí velice aktivně. V go je třeba ještě minio, consul/etcd, cockroach, TiDB a spousty dalších.
Presne cisla si uz nepateam, ale vychdzam s vlastneho reasrshu, ktory som robil minuly rok. Lebo som hladal key-value (embeded/http/tcp) databazu, ktora je setrna ku SD karte a neuklada kazdu hodnotu do samosttaneho suboru (ps. hash mapa nie je emebeded databaza).
Proč by hash mapa nemohla být embedded databáze? Co je potom EAV jako association list v lispu? Lisp byl jeden z prvních, který koncept embedded databází rozšířil právě nad plochými strukturami.
A v jiných jazycích ta úmrtnost byla menší? Trochu nevěřím.
Každopádně tím nechci obhajovat go, je to divný jazyk, kdy je potřeba projekt udržovat při životě, často aktualizovat nebo se poměrně rychle dostane do stavu, kdy ho není možné kompilovat.
Na SD karty se mi osvědčil postgresql s nastaveným wal_writer_delay and commit_delay, je tady pak řada projektů, který to umí zabalit přímo do programu, třeba https://github.com/fergusstrange/embedded-postgres. Výhoda třeba proti sqlite je, že mohu zápis na disk pozdržet v paměti (pokud to dává z hlediska použití smysl).
U jakého řešení jsi nakonec skončil?
Prave molochy ako Postgre som tam nechcel tahat, potreboval om proste cisto key-value Db. No z hladanim som neuspel, dokonca ani v Go ani Rust-e. vsetko boli len wrapery nad LevelDb/RocksDb, alebo to boli realne nefunkcne projekty.
Nakoniec som dany projekt odlozil, lebo prisli ine priority a uspokojivu databazu som nenasiel (potreboval som fault tolerance a aspon nejaku tranzakcnost).
No do finale sa dostali Sqlite a LiteDB.
nejvýhodnější? Z jakého pohledu?
V posledních letech mi připadají Apache projekty dost obludné, nepěkné, zabugované, složitě testovatelné, zrovna Apache IoTDB mezi to také patří, to vůbec nejde o jazyk.
to su vsetko tvoje subjektivne pocity, ked si zadefinujemme metriku "obludnost" a "nepekne" tak sa o tom mozeme bavit.
inak ze "nepekne", ja neviem odkial to ti ajtaci maju ze to musi byt pekne? hlavne ze to funguje?
Ano, je to subjektivní, proto jsem i větu začal "mi připadají".
Apache IoTDB znamená 5000 souborů a 650 000 tisíc řádků kódu, to je obludný. Samotný dependency tree je velice rozsáhlý.
Já ale nemluvil o vzhledu, vždy to ani nemá žádné IU (teda kromě status page, která je standard apache). V kódu je spousta komentářů v různých jazycích (zejména čínština a angličtina), to výrazně snižuje čitelnost a možnost odhalení bugů. Snížená čitelnost znamená vyšší riziko pro bugy, a že těch je. Vnitřní struktura je chaotická, plugable backend pro TsFile je skvělý, ale TsFileSync je už jen rovnák na ohejbák.
Funguje. jak dlouho? Z narůstající komplexitou klesá snaha a možnosti vývojářů projekt posouvat. Pročtěte si to repo, už teď je to obluda.
Tohle fakt na Javě miluju:
https://github.com/apache/iotdb/blob/master/consensus/src/main/java/org/apache/iotdb/consensus/iot/service/IoTConsensusRPCServiceMBean.java
Ono to chcípne samo, jako mnoho Apache projektů. 52 větví, commity v čínštině... to má dobře našlápnuto.
6. 12. 2022, 10:43 editováno autorem komentáře
Tohle fakt na Javě miluju:
https://github.com/apache/iotdb/blob/master/consensus/src/main/java/org/apache/iotdb/consensus/iot/service/IoTConsensusRPCServiceMBean.java
Nejsem si uplne jisty, ale tipnul bych si ze je to nejaky Java archaismus.
V dobe kdy jeste neexistovaly v Jave anotace se to obchazelo tim, ze trida implementovavala prazdne "rozhrani". Tzn tenhle inteface jen label, ktery se da prilepit na nejakou tridu a tim ovlivnit jeji chovani pomoci reflexe.
rad by som dodal, ze iotdb sa mi zda nie je db urcena na to, ze bezi v embeded zariadeniach. ten server moze bezat na klasickom serveri a len to z device posiela nieco "odtucnene". to ze to je pisane v jave nevadi nicomu ked to nebezi na klientovi
Tak jasně, ale pak nechápu proč vzniká další projekt, když takových je tu mnoho. Co by mělo smysl je DB, která je instalována už na zařízení -- edge computing, podobně jako se tam snaží narvat ML/AI zpracování dat. Ze všech variant vybrat tohle mi přijde jako šlápnutí vedle.
Asi si to vyžádala Čínska lidová republika:
https://iotdb.apache.org/Community/Community-Powered%20By.html
soudruhu Jirsáku