PT | EN

Tech Trusted
Advisor

PT | EN

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:

In the previous post, I asked which function, in the following code, would fill the array with 1’s faster and...
When designing systems that need to scale you always need to remember that using better resources could help you to...
[tweet]Transformação Digital é sobre como o negócio será impactado (transformado) pela adoção de recursos digitais.[/tweet] Portanto, começando uma nova série...
Last year, Mario Fusco wrote a blog post series questioning the way Java developers are implementing the Gang of Four (GoF) patterns....
Em minha experiência, a inovação acontece a partir de um dos seguintes gatilhos: A área de negócios identifica uma demanda...
Mais uma vez, tive o prazer de compartilhar bons momentos com o pessoal do Canal.NET discutindo sobre arquitetura e tecnologia....