World’s Simplest Key-Value Database, Implemented in Two PowerShell Functions

I’ve been spending some time learning from the “Designing Data-Intensive Applications” book. I am reading it for the third time, cover-to-cover. That is a fantastic book.

At some point, the author shares an interesting “database” implementation with two bash functions. Here is my implementation (following the very same ideas), using PowerShell.

function Set-DbValue {
    param(
        [Parameter(
           Mandatory = $true
        )]
        [string]$key,
        [Parameter(
           Mandatory = $true
        )]
        [string]$value
    )
    
    Write-Host "Setting '$key' to '$value'"
    Add-Content Database.txt "$key, $value"
}

function Get-DbValue {
    param(
        [Parameter(
           Mandatory = $true
        )]
        [string]$key
    )
    
    Select-String -Path ".\Database.txt" -Pattern "^$key, (?.*)$" `
    | Select-Object -Last 1 `
    | %{ $_.Matches[0].Groups["x"].Value }
}

Of course, this is not enough for any real-world scenario.

Every call to Set-DbValue function appends to the end of the file (not overwriting values). Every time you need to get a value, you need to look for the last occurrence of the key. The Set-DbValue performance is excellent. But, the Get-DbValue performance is terrible (all calls are O(n)).

IMPORTANT: I am far away from being a PowerShell specialist. If you can improve this code, I will be happy learning from you in the comments.

If you are serious about using a good database, I have an excellent recommendation for you.

Compartilhe este insight:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Nessa semana, em uma dessas conversas que valem a pena, surgiu uma breve discussão sobre um texto antigo de Rubem...
Este é o primeiro post de uma série onde pretendo compartilhar, com considerável nível de detalhe, como resolver problemas de...
Implementing a good caching strategy is fundamental to achieve good performance. Besides that, it is not a trivial task. There...
I wrote this post in 2016. Unfortunately, I lost it when I “rebooted” my blog. Anyway, I have a good...
Em minhas consultorias, quando questionado sobre escalabilidade, recorro sempre ao scale cube, compartilhado no excelente livro “The Art of Scalability”,...
Nesse ano, palestrei na APIX sobre microsserviços. Abaixo, registro em vídeo feito pela organização do evento. Comentários? Feedback?