Den nye versjonen av databasestyringssystemet Tarantool 2.8 er tilgjengelig, og den gir kontinuerlig lagring av data med henting av informasjon fra minnet (in-memory database). Databasesystemet kombinerer høy forespørselshastighet, typisk for NoSQL-systemer (for eksempel Memcached og Redis), med påliteligheten til tradisjonelle databasesystemer (Oracle, MySQL og PostgreSQL). Tarantool er skrevet i C og tillater oppretting av lagrede prosedyrer i Lua. Koden distribueres under BSD-lisens.
Databasesystemet gjør det mulig å arbeide effektivt med store datamengder under høye belastninger. Blant spesifikasjonene til Tarantool er muligheten til å lage håndterere i Lua (LuaJIT er innebygd), bruken av MessagePack-formatet for datakommunikasjon med klienten, tilstedeværelsen av to innebygde motorer (lagring i RAM med dumping til permanent lagring og to-nivå disk lagring basert på LSM-tre), støtte for sekundære nøkler, fire typer indekser (HASH, TREE, RTREE, BITSET), verktøy for synkron og asynkron replikering i master-master-modus, støtte for autentisering av tilkoblinger og tilgangskontroll, samt mulighet for behandling av SQL-spørringer.
Hovedendringer:
- Stabilisering av MVCC (Multi-Version Concurrency Control) i in-memory motoren memtx.
- Støtte for transaksjonalitet i det binære protokollsystemet IPROTO. Tidligere måtte en lagret prosedyre skrives i Lua for å håndtere transaksjoner.
- Støtte for synkron replikering, som fungerer i tilknytning til enkelt-tabeller.
- Mechanismen for automatisk failover til en reservenode basert på RAFT-protokollen. Tarantool har lenge implementert asynkron WAL-basert replikering, så nå trenger man ikke å overvåke master-noden manuelt.
- Automatisk failover av master-noden er også tilgjengelig i tilfelle av en datasegmenterings-topologi (sharding), ved hjelp av vshard-biblioteket som sprer data over serverne med virtuelle bøtter.
- Forbedret rammeverk for bygging av klyngeapplikasjoner med Tarantool Cartridge i virtuelle miljøer. Tarantool Cartridge håndterer nå bedre belastninger.
- Hastigheten til Ansible-rollen for klusteroppsett er akselerert med 15-20 ganger. Arbeidet med store klynger har dermed blitt enklere.
- Det har blitt et verktøy for forenklet migrering fra gamle versjoner >1.6 og < 1.10, som er tilgjengelig med en ekstra alternativ ved oppstart. Tidligere måtte migreringen gjøres ved å rulle ut en mellomversjon 1.10.
- Optimalisering av lagring av små tupler er gjennomført.
- Støtte for UUID er implementert i SQL, og typekonvertering er forbedret.
Det er verdt å merke seg at fra versjon 2.10 vil det bli en overgang til en ny politikk for utgivelse av versjoner. Ved betydelige utgivelser som bryter bakoverkompatibiliteten, vil det første tallet i versjonen endres, ved mellomliggende utgivelser vil det andre tallet endres, og ved korrigerende utgivelser vil det tredje tallet endres (etter 2.10 vil versjon 3.0.0 bli utgitt).
Kilde: opennet.ru
