• Nibodhika@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    10 months ago

    This looks awesome and exactly what I have been looking for.

    One question about implementation just out of curiosity, is there any database? I’m worried that when it gets to hundreds or thousands of pages querying things becomes slow if it’s just scanning files.

    • zef@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      5
      ·
      10 months ago

      Yes, it’s using SQLite under the hood in Online mode and IndexedDB in the browser in Sync mode.

      • Nibodhika@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        9 months ago

        SQLite should be more than enough, I can’t find the file on the space folder though, is it created inside the docker container on server startup? Is there a reason not to store it in space so it doesn’t need to be regenerated each time?

        • zef@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          9 months ago

          It’s .silverbullet.db in the root of your space folder. Note that because there’s no schemas in SB, SQLite is used as a fancy key-value store and many queries become somewhat (but not very) optimized table scans. In this SQLite file you’ll see a “kv” table that contains everything.

          • Nibodhika@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            9 months ago

            I feel like facepalming myself to death for having asked such a stupid question before running an ls -a on the folder.

            One last question, I’ve been reading on Plugs because there’s one thing that I use regularly that I think doesn’t exist and want to know if it would be possible for me to implement, it’s called plantuml. Essentially it’s a plug that would act on a specific block of code, like the latex one, and would use POST the code to a configurable url, get an image as return and display that instead.

            • zef@lemmy.worldOP
              link
              fedilink
              English
              arrow-up
              1
              ·
              9 months ago

              Yes this is doable, with the caveat that I have not invested a lot of time in documenting all the plug APIs etc. You can have a look at the mermaid plug to get a sense of how this can be done, it will be similar except that you — indeed — may end up having to post something to a URL somewhere rather than render the thing on-the-fly with a JavaScript library you load externally: https://github.com/silverbulletmd/silverbullet-mermaid

              • Nibodhika@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                9 months ago

                Actually mermaid seems to be able to do all I’m doing with plantuml and syntax is very similar, might give that a try before since that one would also work in offline mode.

    • zef@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      10 months ago

      That said, I have not tested this with hundreds of thousands of notes (I have close to a thousand myself). No performance issues there, but…

      • Nibodhika@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        9 months ago

        I said hundreds or thousands, I don’t expect to be creating hundreds of thousands of pages, but from your reply on the other thread SQLite should be more than capable of handling this scale.

        Nice knowing that you have close to a thousand and it’s still fine. It will take me a long time to get to that amount of pages, but if I can get started with this it seems like an awesome way of storing knowledge bases, so I expect it will grow quite rapidly as I migrate all of my different things into it.