Computable.nl
  • Thema’s
    • Carrière
    • Innovatie & Transformatie
    • Cloud & Infrastructuur
    • Data & AI
    • Governance & Privacy
    • Security & Awareness
    • Software & Development
    • Werkplek & Beheer
  • Sectoren
    • Channel
    • Financiële dienstverlening
    • Logistiek
    • Onderwijs
    • Overheid
    • Zorg
  • Computable Awards
    • Overzicht
    • Nieuws
    • Winnaars
    • Partner worden
  • Vacatures
    • Vacatures bekijken
    • Vacatures plaatsen
  • Bedrijven
    • Profielen
    • Producten & Diensten
  • Kennisbank
  • Nieuwsbrief

Snelheid en eenvoud troef bij Ksql en Kdb

03 juni 1999 - 22:007 minuten leestijdAchtergrondData & AI
Jan Karman
Jan Karman

De programmeertaal K staat bekend om zijn grote uitdrukkingskracht en hoge verwerkingssnelheid. Inmiddels zijn ook de database Kdb en de vraagtaal Ksql beschikbaar gekomen. Deze producten zijn door gebruikers goed onthaald. Vooral in financiële kringen zijn veel enthousiaste aanhangers van de K-omgeving te vinden.

Onder de titel ‘De Onbekende Krachttaal’ stond in Computable (31 juli 1998) een artikel over de taal K. Deze taal wordt gekenmerkt door zowel een grote uitdrukkingskracht als een hoge verwerkingssnelheid. Een aantal voorbeelden maakte duidelijk hoe K werkt.
De sleutels tot de grote uitdrukkingskracht blijken vooral de eenvoudige, efficiënte datatypen (atom en list) en de krachtige primitieve functies die in staat zijn beide typen data probleemloos te verwerken. De hoge verwerkingssnelheid wordt bereikt door de ingenieuze indexing-faciliteit, die zowel op data als op functies van toepassing is, en de parallelle functies en operatoren, een en ander ondersteund door incremental compiler-technieken.
Op verzoek van veel gebruikers bij financiële instituten en op universiteiten heeft Kx Systems een nieuw product op de markt gebracht: Desktop K. Van dit product is een onverkorte trial version van Internet af te halen (http://www.kx.com). Inmiddels zijn ook de database Kdb en de vraagtaal Ksql beschikbaar. Deze producten werden in het artikel van vorig jaar al aangekondigd.

Sneller dan snel

Van het databasesysteem Kdb eb de bijbehorende vraagtaal Ksql zijn ook in een desktop-versie beschikbaar. Ksql is SQL92-compliant. Iemand met ervaring in een andere standaard-SQL zal dus geen problemen hebben met het gebruik van Ksql. Maar er is meer.
Kdb en Ksql zijn ‘gewone’ K-applicaties. Dit betekent dat ze ook samen met de programmeertaal K kunnen worden gebruikt. Men is dus bij het gebruik van Ksql niet uitsluitend aangewezen op de functies van SQL: de voordelen van de kracht van K kunnen onverkort worden benut. Daardoor is Kdb een zeer snelle oltp-engine (‘on-line transaction processing’) met een minimum aan hardware. Kdb is uiterst snel. Op een gewone PC met 64 MB Ram, een ultra-wide controller en vier schijven draait Kdb op een multi-gigabyte dss-applicatie (decision support system) tien maal sneller dan de snelste database tot nu toe, waarvan de resultaten zijn gepubliceerd. En dat tegen een fractie van de kosten.
De basis-datastructuur van Kdb is de arrable (afgeleid van array-table), een tabel waarvan de volgorde naar believen kan worden bepaald. Arrables zijn bijzondere objecten, waarbij een veld in een record kan bestaan uit een array, zodat bijvoorbeeld een gehele tijdreeks kan worden opgeslagen in een enkel veld.
Zoals bij de meeste moderne SQL’s staat ook Ksql door gebruikers gedefinieerde functies binnen database-statements toe. In tegenstelling tot bij andere SQL’s kunnen bij Ksql eenvoudig de functies over de arrays worden gedefinieerd.
Buiten de gebruikelijke SQL-functies beschikt Ksql over een groot aantal extra functies. Bijvoorbeeld het vinden van de op één na hoogste waarde in een reeks. In Ksql is dit een lineaire tijd operatie, terwijl dat in andere SQL’s een extra self join vereist.
Verder beschikt Ksql over functies als het vinden van de n hoogste, de n laagste waarden, voortschrijdende sommeringen, voortschrijdende gemiddelden, voortschrijdende producten en differentiaties als delta’s en ratio’s.
Kdb voert queries serieel uit. Daardoor wordt een locking control vermeden. Om die reden kunnen in gedistribueerde applicaties alle operaties aan alle sites worden gestuurd. Dat gebeurt dan in dezelfde volgorde in plaats van in een twee-fasen overdracht. Daarbij wordt de coherentie over de sites garandeert, zonder blokkering.

Uitdrukkingskracht

Uitdrukkingskracht en verwerkingssnelheid zijn twee kenmerken die K en Ksql en Kdb onderscheiden van concurrerende producten.
Een eenvoudige database zou er als volgt uit kunnen zien:
 
emp: ([] name: (‘rick’,’dave’, ‘rick’, ’tom’, ‘dave’),
salary: (15, 15, 45 45, 50),
starttime: (1,1,6,8,12),
endtime: (2, 3, 9,16, 15))
 
show’emp’
 
Als toelichting kan het volgende worden opgemerkt.
"Create table" wordt in Kdb eenvoudig gedaan door middel van de dubbele punt.
Primaire sleutels worden aangegeven door het desbetreffende veld binnen rechte haken te plaatsen. De lege rechte haken in het eerste statement duiden erop dat er geen primaire sleutel is gedefinieerd en dientengevolge in het betreffende veld duplicate values mogen voorkomen.
De Ksql-functie "show" brengt de tabel genoemd tussen de quotes, in een gui-concept op het scherm, waarin tevens onbeperkt met een enkele muisklik kan worden gesorteerd.

Vraagstuk

De opdracht die we ons nu stellen is wat ingewikkelder: vindt de salarisgemiddelden met begintijd en eindtijd en voeg intervals waar mogelijk samen. Ervaren SQL-ers herkennen dit probleem uit de literatuur herkennen als een vraagstuk van Rick Snodgrass van de University of Arizona.
Stap 1: creëer in één tabel salarissen negatief met eindtijd en salarissen positief met begintijd
 
t:(select t:endtime, x:-salary from emp) union select t:strattime, x:salary from emp
 
Stap 2: verander t door een voortschrijdend gemiddelde te creëren
 
t:select last x by t from select t, (sums x)/sums (0 < x)-0 > x from 't'asc t
 
Stap 3: tenslotte selecteren we alleen die opeenvolgende intervallen die verschillende gemiddelden hebben. Daarbij zorgen we ervoor dat de velden de juiste namen hebben.
 
t:select -1 drop x, starttime:-1 drop t, endtime:1 drop t from select from t where
 
Laat het resultaat zien:
 
show ’t’
 
Dankzij de extra functies waarover Ksql beschikt wordt dit probleem in slechts drie statements opgelost.
Ksql kan vanuit de K-omgeving worden aangeroepen en bestuurd. Er kan zich een situatie voordoen waarin bewerkingen te gecompliceerd zijn om met een SQL te worden opgelost. De tabellen die door Ksql zijn gecreëerd of geselecteerd, kunnen dan in de K-omgeving verder worden geanalyseerd en bewerkt. De resultaten worden daarna naar de tabel teruggestuurd en opnieuw door Ksql gepresenteerd.

Verwerkingssnelheid

Hier zou ook kunnen staan ‘verwerkingskracht’. De Enterprise Version van Kdb kent namelijk geen limiet op de omvang van een database. De verwerkingssnelheid kan worden geïllustreerd aan de hand van een aantal reële praktijkvoorbeelden.

  • Bij Lehman Brothers resulteert een bepaalde query op een database van 11 miljoen records met enkele honderden kolommen (totaal ongeveer 20 gigabytes) in een tabel van 7500 bij 15 in minder dan een seconde;
  • Bij Zürich Insurance worden premietabellen tot 300 miljoen records verwerkt;
  • Kdb kan op een Pentium II meer dan 40.000 TCP/B transacties per seconde verwerken op een 100 MB database;
  • Op de (eerste generatie) Pentium, 160 Mhz, met 64MB Ram van de auteur worden alle queries (aggregatie-functies, groeperingen, selecties etc.) op een gegenereerde database van 500.000 records met 10 velden zonder merkbare responstijd uitgevoerd. Het creëren van de database zelf neemt ongeveer 5 seconden in beslag.

Ipc- en Webondersteuning

Naast de snelheid en uitdrukkingskracht heeft K nog een aantal andere voordelen, zoals ipc- en Web-ondersteuning (Interprocess Communication).
Omdat K ipc ondersteunt, doet Ksql dat ook.
Dit gaat als volgt:

  • de server declareert een poort die de client gaat gebruiken;
  • de ontvanger van een request in een server is een functie met een gereserveerde naam;
  • daarna zendt de client code een request.
De overhead van de ipc is betrekkelijk klein: 500 requests hebben 6 seconden nodig in plaats van 4.
De programmeertaal ondersteunt ook het Web. K-programma’s luisteren direct over een voorgedefinieerde poort. Wanneer een signaal op die poort wordt ontvangen wordt het opgevangen door een gereserveerde functie. Deze functie vertaalt de input en roept dan een normale K-functie aan. Deze kan op zijn beurt weer een Ksql-functie aanroepen.
Samenvattend kan worden gezegd dat de belangrijkste eigenschappen van K en Kdb hun uitdrukkingskracht (tijdreeksen, grote databases, wiskundige bewerkingen) en verwerkingssnelheid zijn.
Een andere belangrijke pré is dat er geen noodzaak bestaat om een interface te bouwen naar verschillende andere programmeeromgevingen. Omdat Kdb een library in K is kan deze snel worden geleerd door iedereen die bekend is met standaard-SQL.
K en Kdb kunnen interacteren met klassieke databasesystemen als Sybase en Oracle. Bijvoorbeeld via Odbc of speciale productgerichte interfaces.
Andere programmeeromgevingen, zoals Java, Visual Basic en Web browsers, kunnen K en Kdb aanroepen via interprocess communication.
Kx Systems heeft door middel van de Desktop-versies van K en Kdb deze producten ook voor de individuele commerciële gebruiker (consultants, ontwikkelaars) bereikbaar gemaakt. Voor persoonlijk gebruik zijn er bovendien ongekorte en steeds hernieuwbare probeerversies beschikbaar.
 
Jan Karman, onafhankelijk consultant

Meer over

ECM

Deel

    Inschrijven nieuwsbrief Computable

    Door te klikken op inschrijven geef je toestemming aan Jaarbeurs B.V. om je naam en e-mailadres te verwerken voor het verzenden van een of meer mailings namens Computable. Je kunt je toestemming te allen tijde intrekken via de af­meld­func­tie in de nieuwsbrief.
    Wil je weten hoe Jaarbeurs B.V. omgaat met jouw per­soons­ge­ge­vens? Klik dan hier voor ons privacy statement.

    Whitepapers

    Computable.nl

    Bouw de AI-organisatie niet op los zand

    Wat is de afweging tussen zelf bouwen of het benutten van cloud?

    Computable.nl

    De weg van dataverzameling naar impact

    Iedere organisatie heeft data, maar niet iedereen weet hoe je het goed gebruikt. Hoe zet je waardevolle informatie om in actie?

    Computable.nl

    In detail: succesvolle AI-implementaties

    Het implementeren van kunstmatige intelligentie (AI) biedt enorme kansen, maar roept ook vragen op. Deze paper beschrijft hoe je als (middel)grote organisatie klein kunt starten met AI en gaandeweg kunnen opschalen.

    Meer lezen

    ActueelCloud & Infrastructuur

    Kort: Kamervragen mail-ophef Strafhof, NXP-fabriek Nijmegen sluit, Hema op de data-toer en jaarcijfers Lenovo

    ActueelCloud & Infrastructuur

    Kort: Nieuw kantoor Salesforce NL, videobellers in problemen, overheid omarmt ai-agents, 40 mln. voor defensie-tech Keen

    ActueelData & AI

    Nederlandse organisaties weten bar weinig van de Data Governance Act

    ActueelCarrière

    Kort: Atos benoemt Benelux-hoofd ai-tak, Eset-rapport, Sioux naar Singapore, Dell vernieuwt AI Factory

    Standards standaarden
    ActueelData & AI

    ‘Standaarden-organisaties moeten aan de bak’

    Remko Reinders op podium
    ActueelCloud & Infrastructuur

    Salesforce: Ai-agent wint na voorzichtige start snel terrein

    Geef een reactie Reactie annuleren

    Je moet ingelogd zijn op om een reactie te plaatsen.

    Populaire berichten

    Meer artikelen

    Footer

    Direct naar

    • Carrièretests
    • Kennisbank
    • Planning
    • Computable Awards
    • Magazine
    • Abonneren Magazine
    • Cybersec e-Magazine

    Producten

    • Adverteren en meer…
    • Jouw Producten en Bedrijfsprofiel
    • Whitepapers & Leads
    • Vacatures & Employer Branding
    • Persberichten

    Contact

    • Colofon
    • Computable en de AVG
    • Service & contact
    • Inschrijven nieuwsbrief
    • Inlog

    Social

    • Facebook
    • X
    • LinkedIn
    • YouTube
    • Instagram
    © 2025 Jaarbeurs
    • Disclaimer
    • Gebruikersvoorwaarden
    • Privacy statement
    Computable.nl is een product van Jaarbeurs