About a decade ago, I tried to index the web via the Dewey Decimal System. I had a site laid out similar to Google, where you could browse sites continuously starting from a given call, but the DDS is proprietary, and those people hate anyone who uses their IP without a license. You can Google everyone they’ve shutdown – places that weren’t even libraries – for using anything similar to the DDS. I reached out to the group that manages the DDS, and was taken offline before my project even started.

With all the corporate BS lately, and people looking for alternative options, I thought I’d take a search engine old school, and we’d index like Usenet. Except with an XXX.XXX.XXX format.

My original project used sharded Redis, with append logs to disk. I chose it for its in-memory speed and key-value store. Did some calculations, and I’d have to have millions of records just to consume my entire system’s memory.

I had a lot of plans for this before getting shut down.

Now that I’m older, I’m curious if I should be using MongoDB.

What are the benefits and drawbacks of each? Which would you use? And why?

  • ki4jgt@feddit.orgOP
    link
    fedilink
    arrow-up
    0
    ·
    5 days ago

    Can I ask why? Are there errors in the append log? Does it forget things?

    Not questioning your character. Just curious what your personal experiences were.

    • zwerg@feddit.org
      link
      fedilink
      arrow-up
      0
      ·
      4 days ago

      Reddis is an in memory cache. Your data will definitely get deleted from Reddis once the amount stored increases or even simply restarting the service. You need proper persistent storage as well so anything that’s not in the cache can still be retrieved, albeit slower. Personally, I think NoSQL is overhyped and would recommend Postgres instead, unless your application has some very specific requirements.

    • Rimu@piefed.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 days ago

      Technically, it shares a lot of characteristics with databases. You can put data in there and get data out again later, sure. But it’s optimized for short term caching of data, to reduce load on a real database, reduce network requests, that kind of thing.

      In programming you can often use tools in ways they were not intended for and it’ll still work but the costs of that decision might not become apparent until much later. This is one of those. Over time you’ll start to have issues with durability guarantees, complex querying and indexing, transactions and consistency, recovery after failure, backups and restoration, data growth, operational tooling, migrations and schema evolution, concurrency, debugging and observability. None of that shows up during initial development work so you won’t notice until you’re in way too deep.

      • Rimu@piefed.social
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 days ago

        So to answer the original question - use Redis AND MongoDB. For different things.

        MongoDB is your database and Redis is the thing that stops you from needing to hit up the database all the time.