GithubHelp home page GithubHelp logo

rethinkdbdash vs thinky about dendritic HOT 5 CLOSED

kaievns avatar kaievns commented on July 28, 2024
rethinkdbdash vs thinky

from dendritic.

Comments (5)

kaievns avatar kaievns commented on July 28, 2024

@davidbanham , @nwinch any opinion on this one? i built projects in both, and i feel like thinky is a bit more humane option

from dendritic.

nwinch avatar nwinch commented on July 28, 2024

I can't answer specifically why the choice was made for this project, but I can give an opinion on ORM's and our experience with them thus far. The rest of the team may give a different one!

We've been bitten a couple of times on projects by ORM's that didn't scale well - I'm looking at you Mongoose - and imposed limitations that we could've exceeded if they weren't already deeply dug in to the code**. Often the abstraction between your code and the native driver is a gulf too wide, and your left battling with performance issues and odd syntax choices set by the ORM. Getting as up close and personal to the original syntax as possible is advantageous.

That said I did have a pleasant experience with nano when working with CouchDB.

So I think there is some hesitancy when it comes to using some ORM's because we've experienced real world pains with them before.

Thinky looks good though. I definitely don't want to tar and feather it based on other ORM's failings.

As an aside, I do think we need to address some structuring issues we have with the current implementation anyway. Feels like we have a lot of repetitive code, and as a reasonable newcomer to RethinkDB, it can feel a little overwhelming to learn the ins and outs of the syntax to do some of the basics. Some well trodden paths could be welcome in this regard.

** This is not so much a problem with ORM, but a negative side effect of it's usage. It's all too easy to start peppering it everywhere and then it's a real smack upside the head if you need to stop the spread or switch DB's at any point.

from dendritic.

kaievns avatar kaievns commented on July 28, 2024

so, basically "i've been burned before on this". ok, i can hear that.

thinky can have a few quirks of its own, but it is fairly transparent in this regard, it falls back to the rethinkdb interface in some cases. and it also gives you access to the lower level driver at any time (it uses rethinkdbhash btw)

what thinky gives you on top of it though is this:

  1. promises based API
  2. automatic relationships handling
  3. automatic indexes sync
  4. simplified syntax for CRUD operations

it was a bit of a pain to do aggregation calls with thinky as it throws you to the lower level driver for that, but you're doing it anyways, so i figured that won't be an issue

from dendritic.

davidbanham avatar davidbanham commented on July 28, 2024

Wot Nath Said, with a couple extra bits:

I think ORMs in dynamic languages are usually a silly idea. The great thing about an ORM is that it maps your database structures into your type system for you. That's ace!

The crappy thing about ORMs is that they take the query language your database vendor worked really hard on and replaces it with some half-baked DSL. That's lame.

It's often worth trading the latter for the former. In a dynamic language, though, the former isn't a thing. So why would you bother with the latter?

REQL is a really, really nice API to use in Javascript. If we were using a different language that made it awkward to use the native language I'd be on board, but we aren't, so I'm not.

from dendritic.

kaievns avatar kaievns commented on July 28, 2024

resolved in the thinky branch

from dendritic.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.