Kirjoittaja Aihe: Tietokantaklientti, jonka ajat omalla palvelimella: ajoimme 28 moottoria itse ennen kuin kirjoitimme  (Luettu 106 kertaa)

libredb

  • Käyttäjä
  • Viestejä: 1
    • Profiili
Moi,

aluksi avoimesti: työskentelen tiimissä, joka kehittää LibreDB Studiota. Kyse on siis omasta projektistamme, ja kerron sen heti alkuun. Työkalu on MIT-lisenssillä, ilmainen, eikä siitä ole maksullista versiota.

Lyhyesti mistä on kyse. Se on tietokantaklientti, jota ei asenneta jokaiselle koneelle erikseen. Palvelin pyörii kontissa ja käyttöliittymä on selain. Käytännössä työkalu on samassa verkossa kuin tietokanta, joten tietokantaa ei tarvitse avata ulospäin.

Asennus Ubuntulla on yksi komento:

docker run -p 3000:3000 ghcr.io/libredb/libredb-studio:0.17.0

Ensimmäisellä käynnistyksellä luodaan pääkäyttäjä ja salasana kirjoitetaan lokiin. Jos haluat asettaa sen itse, anna ADMIN_PASSWORD ympäristömuuttujana. Image toimii sekä amd64 että arm64 koneilla.

Varsinainen syy kirjoittaa tänne on kuitenkin toinen, ja se koskee ketä tahansa joka valitsee työkalun tuettujen järjestelmien listan perusteella.

Meillä on kahdeksantoista omaa ajuria: PostgreSQL, MySQL, Oracle, SQL Server, SQLite, libSQL, DuckDB, MongoDB, Redis, Couchbase, ClickHouse, Apache Druid, Elasticsearch, OpenSearch, Trino, Apache Cassandra, Prometheus ja Apache Kafka. Lisäksi on kaksikymmentäkahdeksan moottoria, joilla ei ole omaa ajuria mutta jotka puhuvat jonkin meidän ajurimme protokollaa. TiDB puhuu MySQL:n protokollaa, Citus ja TimescaleDB PostgreSQL:n, Valkey ja DragonflyDB Redisin. 18 plus 28 on 46, ja sivulle voi kirjoittaa "tukee 46 moottoria" valehtelematta.

Tässä on ansa, johon lankesimme itse ensimmäisenä. Tietokantaklientti ei vain avaa yhteyttä. Se lukee taululistan, rivimäärän ja koon, indeksit ja viiteavaimet, suoritussuunnitelman, istuntolistan ja tilastot. Kaikki tämä luetaan kunkin moottorin omasta järjestelmäluettelosta, ei protokollasta. Protokolla voi olla sama vaikka luettelo on täysin erilainen. Silloin yhteys menee läpi, näkymä aukeaa ja on tyhjä.

Siksi ajoimme kaikki kaksikymmentäkahdeksan lainattua moottoria itse Dockerilla ja kävimme läpi samat viisitoista näkymää jokaisella.

Tulos: kahdeksantoista vastasi kaikissa näkymissä. Yhdeksän vastasi osittain. Yhdellä toimi pelkkä kyselyeditori.

Pahempaa: se että näkymä vastaa ei tarkoita että sen palauttama luku on oikein. StarRocks palauttaa aina nollan taulun koolle ja rivimäärälle, myös suoran tarkistuksen jälkeen. Doris, josta StarRocks on haarautunut, palauttaa oikeat luvut.

Toiseen suuntaan on vaarallisempi tapaus: jotkin moottorit palauttavat nollan jonkin aikaa datan lisäämisen jälkeen, eivät siksi että ne olisivat rikki vaan siksi että niiden tilastojen kerääjä on hidas. Tuomitsimme täysin toimivan moottorin rikkinäiseksi juuri tästä syystä.

Kirjoitamme edelleen 46, koska yhteyden kannalta se on totta, mutta sen viereen julkaisemme mittaustuloksen moottori kerrallaan. Lisäsimme myös jotain mitä emme aiemmin kirjoittaneet: viisi kahdeksastatoista ajuristamme on suunnittelultaan vain luku, ja ne ovat Druid, Elasticsearch, OpenSearch, Prometheus ja Kafka.

Lähdekoodi: https://github.com/libredb/libredb-studio
Sivusto: https://libredb.org

Jos joku kokeilee moottoria jota listallamme ei ole ja saa eri tuloksen, luen siitä mielelläni.