Hacker Newsnew | past | comments | ask | show | jobs | submit | nikolasburk's commentslogin

https://www.learnchess.ai — The chess app I always wanted (I've tried a lot of apps in the last years but they always lacked some fundamental feature and/or had terrible UX).


Author of the blog post here, let me know in case you have any questions around the Prisma Postgres stack!


I wrote the blog post for this, feel free to drop any questions and the Prisma team will help!


Hey there, I worked on the benchmarks from the Prisma-side.

First off: Thanks for your feedback and questions, we're trying to create a meaningful comparison of ORMs and will be iterating on the benchmark setup and re-run them at some point, so your input is very much appreciated!

> It's not clear how many records were generated in the sample dataset for these benchmarks.

To clear the confusion: We've indeed used a sample size of 1000 records for the benchmark. If you click on the hyperlinked "real-world infrastructure" in the intro paragraph on benchmarks.prisma.io, the pop up shows you this information.

> I'm more interested in what latency and resource consumption look like for each query under any type of load.

This is great feedback and we were already considering adding this kind of information to the next iteration of the benchmarks. Thanks for this input!

> The issues that we were seeing with Prisma [3] were latency in acquiring a connection and executing a query when many queries were running simultaneously (with idle connections available in the pool and a high connection limit on Postgres).

That sounds like something our Engineering team may want to look into! Did you by any chance create a GitHub issue for this? It would be super helpful for the team to have more context on the issues you're describing here, so they can get fixed.

> I'd also be curious about the difference in performance for something like a nested `updateMany` where depending on how the query is generated, could deadlock or place a lock on more rows than necessary -- and where the generated queries actually matter.

This is something that hasn't been on our radar yet but I'm taking a note off for the next benchmark iteration as well!

Thanks again, please let us know if you have any further questions about Prisma or the benchmarks.


Our pricing for Prisma Postgres indeed presents a bit of a mental shift compared to traditional database providers:

We charge for query volume, not for compute!

We believe that ultimately this is a more intuitive way for developers to think about database cost.

Generally, our goal is that developers need to only think about _queries_ — we'll take care of everything else to make sure those queries can run efficiently. Developers shouldn't need to worry about compute, scaling, downtime, etc.


How about the scenario where I do a select … where … on a view and that view is defined to have 5 CTEs on different tables and then a final select doing some complex stuff there.

Is that billed as one query or 6?


That would be billed as a single query. We think this is a much simpler way to reason about your cost compared to counting rows scanned, CPU time consumed or something more granular like that.

If your query is very expensive, it will take longer to complete, and that will be a signal to you the developer to simplify your query or identify an index that can help speed it up. Prisma Optimise will help you identify and improve such queries.


While I think as an arm-chair business wonk y’all should count it as 6 queries and not 1 as a payer and consumer I’m even more likely to use it now that you count us as only a single query. :-)


I just answered the same questions on Twitter [1], so just quoting that:

Neon is a lot more feature-rich right now (since PPG just came out) and has awesome stuff like branching.

On the long-run, we expect to have a similar feature set. Additionally, our underlying tech has the benefits of avoiding cold starts and likely being more cost-effective.

That being said, I see it as a major benefit that with Prisma you not only get a DB but an entire data layer (incl global caching and real-time DB events) thanks to the first-class integration of our other products like Accelerate and Pulse [2].

[1] https://x.com/nikolasburk/status/1851522983346532669

[2] https://www.prisma.io/blog/announcing-prisma-postgres-early-...


Nikolas from Prisma here! I've been around for almost 8 years (since the Graphcool days) and this description is pretty accurate but I can add a bit more color. The major product evolutions we've had were:

- Graphcool: A GraphQL BaaS written in Scala.

- Prisma 1 (see [1]): A GraphQL proxy server between DB and app server. This was essentially the "GraphQL engine" of Graphcool that we ripped out and made it available as an open-source component. However, its auto-generated CRUD GraphQL API never was meant to be consumed by a frontend. Instead, it was the abstraction layer for the app server to interact with the DB (at first only for GraphQL APIs on the app server via `prisma-binding`, then the first version of Prisma Client that worked with any API layer — both of these were thin JS/TS layers that talked to the GraphQL proxy server where the actual DB queries were generated).

- Prisma 2+ aka Prisma ORM (see [3]): We realized that with Prisma 1, we were essentially competing with ORMs but that our architecture was way too complex (devs needed to stand up and manage an entire server where other ORMs could be used with a simple `npm install`). So, we rewrote the Scala "DB-to-GraphQL" engine in Rust to be able to provision it via a download during `npm install` and run it as a sidecar process on the app server, added a migration system and Prisma ORM was born. That being said, it has evolved a lot since then. We dropped GraphQL in favor of a way more efficient wire protocol [4] and have continuously reduced the footprint and responsibility of the query engine (e.g. you can now use Prisma ORM with standard Node.js DB drivers [5]).

If you want more details, I talked more about this evolution on Twitter [6] a while ago.

This launch is a huge milestone for us and it's definitely one of the most exciting launches I've been a part of at Prisma!

[1] https://www.prisma.io/blog/prisma-raises-4-5m-to-build-the-g...

[2] https://github.com/prisma-labs/prisma-binding

[3] https://www.prisma.io/blog/prisma-the-complete-orm-inw24qjea...

[4] https://www.prisma.io/blog/prisma-5-f66prwkjx72s

[5] https://www.prisma.io/docs/orm/overview/databases/database-d...

[6 ] https://x.com/nikolasburk/status/1384908813069869058


If you're already looking at Next.js + Tailwind but unsure about what to use for the DB, I'd recommend checking out the T3 stack [1].

It uses tRPC [2] for type-safe API calls and Prisma [3] for your DB. There's lots of content out there teaching how to use this stack to build sophisticated apps (e.g. this in-depth tutorial teaching how to build a social media app [4]).

Disclaimer: I work at Prisma and am also a huge fan of type-safety, so T3 is basically my dream stack.

[1] https://create.t3.gg/

[2] https://trpc.io/

[3] https://www.prisma.io/

[4] https://www.youtube.com/watch?v=jqVm5_G1ZEE&ab_channel=WebDe...


The Playground is an interactive learning environment for Prisma. Learn how to send database queries and explore migrations workflows with the Prisma ORM.


This looks fantastic, congrats to the launch!


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: