Announcement

Collapse
No announcement yet.

Limbo Is An SQLite-Compatible OLTP DBMS Leveraging IO_uring & Rust

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Limbo Is An SQLite-Compatible OLTP DBMS Leveraging IO_uring & Rust

    Phoronix: Limbo Is An SQLite-Compatible OLTP DBMS Leveraging IO_uring & Rust

    For fans of SQLite and/or new database solutions, Limbo is an in-development, open-source OLTP database management system that is compatible with SQLite while written in the Rust programming language and leveraging Linux's IO_uring for async I/O...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    When I read the title, I got excited. But alas, the name was just "reused".

    The Limbo Programming Language

    The lesser known language by Dennis Ritchie (of C fame). It is basically one of the first JVM/.NET kind of "VM" approaches to language safety. It was implemented in parallel with (early) Java and at that point was a tossup between which would win out.

    I tended to avoid it personally because I foresaw that there was some risk involved in the VM (it was too complex to maintain by smaller teams). That did prove to be an issue for legacy codebases, I don't believe the VM is 64-bit clean. Shame because a portable acme(1) would be quite cool.

    ... I'm going to stop rambling about an unrelated project now!
    Last edited by kpedersen; 09 May 2024, 08:39 AM.

    Comment


    • #3
      Looks interesting! I'll have to keep an eye on this.

      Personally I'm pretty satisfied with SurrealDB. It's BSL (from the start, not a relicense, more paranoia than greed. clients are Apache tho) but it's just so good I can't resist. Especially in Rust where all the database solutions are agonizing to work with. SurrealDB quite sanely simply requires your structs to be serializable and you can just shove them right into it without worrying about a schema, but also you can define a schema if you really want it. I have no idea why that's so hard for every other database-related project to do, but, it's the only one in Rust I've found that does so (total opposite of SeaORM which requires you to generate two auxiliary crates just for your entities! TWO!). It also has clients for many languages, so it's not locked down to Rust (actually it feels like they care about the JS client more than the Rust one, lol). However, the Rust one can of course run in-process since SurrealDB itself is in Rust.
      I really love this DB, I'd probably use it even in non-Rust projects. If I ever needed to use C# again I'd probably even consider using Surreal over EF (actually, back when I used C# I used LiteDB over EF, but that's neither here or there)

      Comment


      • #4
        rust and io_uring? security nightmare. no thanks.

        Comment


        • #5
          Originally posted by cj.wijtmans View Post
          rust and io_uring? security nightmare. no thanks.
          Citation please

          Comment


          • #6
            Originally posted by Jumbotron View Post

            Citation please
            Easy for io_uring, which appears frequently on the kernel vulnerability lists. I've just searched for "Google security io_uring", which yielded https://security.googleblog.com/2023...-42-linux.html and Phoronix's https://www.phoronix.com/news/Google...cting-IO_uring relay thereof as second and first results respectively. "security io_uring" also returns the Phoronix article for me.

            As for Rust... well, it certainly appears on vulnerability lists, but so do Go and the other programming languages anyway, so I wouldn't single that one. But io_uring, definitely. I disable this thing, along a few others, when building my own kernels.

            Comment


            • #7
              Originally posted by debrouxl View Post
              Easy for io_uring, which appears frequently on the kernel vulnerability lists. I've just searched for "Google security io_uring", which yielded https://security.googleblog.com/2023...-42-linux.html and Phoronix's https://www.phoronix.com/news/Google...cting-IO_uring relay thereof as second and first results respectively. "security io_uring" also returns the Phoronix article for me.
              Awesome. We'll rewrite that in Rust, too.

              Comment


              • #8
                Originally posted by debrouxl View Post
                Easy for io_uring, which appears frequently on the kernel vulnerability lists. I've just searched for "Google security io_uring", which yielded https://security.googleblog.com/2023...-42-linux.html and Phoronix's https://www.phoronix.com/news/Google...cting-IO_uring relay thereof as second and first results respectively. "security io_uring" also returns the Phoronix article for me.

                As for Rust... well, it certainly appears on vulnerability lists, but so do Go and the other programming languages anyway, so I wouldn't single that one. But io_uring, definitely. I disable this thing, along a few others, when building my own kernels.
                I'm not even sure io_uring is needed. SQLite is not meant to be used as a real DB, it's only meant to be a smarter repository for complex configs and such. But hey, if they can sort it out, why not?

                Comment


                • #9
                  While SQLite is quite useful have I had more performance using plain files and directories for some smaller applications. I would not mind a faster SQLite clone.

                  Comment


                  • #10
                    Originally posted by debrouxl View Post
                    Easy for io_uring, which appears frequently on the kernel vulnerability lists. I've just searched for "Google security io_uring", which yielded ...
                    While io_uring does seem to have a high number of vulnerabilities (it's a new subsystem, doing async in a new way, and getting regular new features), that doesn't mean that apps using io_uring are exposing users to vulnerabilities. Those vulns involve using io_uring in weird/pathological ways, not something an app like limbo would do, especially when you're interfacing with it using high-level SQL.

                    The appeal of io_uring is high-performance async, many dbs and network systems use it. The current vulns are a bummer but they're AFAIK just growing pains that will eventually disappear, not something inherent to the architecture.

                    As for Rust... well, it certainly appears on vulnerability lists, but so do Go and the other programming languages anyway, so I wouldn't single that one.
                    That's just cj.wijtmans yelling at clouds from their hate-filled world. Rust is a great language to write low-defect software in.

                    Comment

                    Working...
                    X