4 ms·
Nile CEO here. Thanks for the feedback. Let me try to explain it a bit. Modern SaaS applications are multi-tenant. We’re the first database that virtualizes te
by infra_dev 3y ago
Nile CEO here. Thanks for the feedback. Let me try to explain it a bit.
Modern SaaS applications are multi-tenant. We’re the first database that virtualizes tenants into the database. A tenant is primarily a company, an organization, or a workspace in your product that contains a group of users. This enables seamless tenant isolation, per-tenant backups, and placement on multi-tenant or dedicated infrastructure, anywhere on the planet. You can do all this with the experience of a single Postgres! You don’t have to manage multiple databases, build complex permissions for isolation, or write buggy scripts to read specific tenant data from backups. On top of the tenant model, we provide opt-in user management capabilities, customer-specific vector embeddings, and instant tenant admin dashboards.
You manage schemas like how you manage with standard Postgres. Your favorite tooling should work. When you make the schema change, Nile pushes the schema to all the tenants. For the user, it is like interfacing with a single Postgres instance.
We have built a Rust based layer internally to manage tenants, route them, shard them if needed and have multiple tenants talk to each other. Happy to chat more. My email is ram@thenile.dev
- drdaeman 3y ago> Modern SaaS applications are multi-tenant. This is true in a sense “most modern SaaS apps have at least two unrelated users or user groups” (forgive me please if I’m wrong here, but that’s how I loosely understand “multi-tenant”), but it’s not exactly clear why this is important. I strongly suspect that the majority of modern SaaSes don’t do any database-level tenant isolation or per-tenant backups. The smaller the company the less it’s likely. Row-level security is a very rare sight to behold, even in regulated areas (certifications like HIPAA compliance don’t really require this). The best they do if they’re really global (I’m sure most are only global in “we accept users from anywhere”, but not so much under the hood - even though cloudy sales pitches love to paint a different picture, most SaaSes I’ve seen were one or two-region deployments) is try to move/shard data closer to the the user’s region. I think one concrete example (as simple as possible) would help a lot.
- maweaver 3y agoI think it makes more sense if you think of it in terms of "B2B" SaaS applications. Think selling a subscription to a medium-sized company, all in one geographical location, where data is shared between all users of that organization, and very carefully not shared outside of that group. For a more concrete example, think Salesforce. I'm not sure that I would generalize that to all modern SaaS applications though.
- infra_dev 3y agoNile CEO here. Here are a few use cases that can help you. We believe SaaS is 95% of new companies today and it is very broadly applicable. Happy to chat further if interested 1. GitHub helps a group of developers manage and deploy their code. Each Github organization is a tenant, and the developers within those organizations are users. 2. Salesforce or Hubspot helps sales reps manage their leads. Each company is a tenant, and the users are the sales reps. 3. Ring is a home security company that provides alarm services to different households. Each household is a tenant, and people living in a house using their service are users. 4. Toast is a platform to help build software for restaurants. The restaurants are tenants, and the employees of the restaurants are the users.
- yencabulator 3y ago> 1. GitHub helps a group of developers manage and deploy their code. Each Github organization is a tenant, and the developers within those organizations are users. Nope, Github users exist outside of organizations in a global namespace, and can be invited to be members of multiple organizations.
- infra_dev 3y agoYes, that is correct. In Nile, users are shared tables. They can belong to multiple tenants. In the case of the Github example, the organization is a tenant and users will be a shared table. Nile provides this out of the box. Will fix the usecase example to be more clear.
- hathawsh 3y agoCan some tenants stick to an older version of the schema while other tenants use a newer schema? Also, how is Nile different from creating a database (or several databases) for each tenant within a single Postgres cluster?
- gwen-shapira 3y agoWe don't have per-tenant schema right now, but we have started designing multi-version experience and it doesn't seem too far from here. Nile is different from DB per tenant in a single PG cluster in that it is much lower overhead per tenant. Since we offer a service, it will translate to lower cost. The DB-per-tenant gets painful after the first few 100 tenants, but some SaaS have thousands of tenants, each with very low activity. Our model makes inactive tenants nearly free. In addition, we also provide the "unified view", which lets you query all your tenants as if they were in the same DB. So you can connect as an admin and "select * from my_table" will give you the results for all tenants. Can be pretty handy.
- hathawsh 3y agoThanks. Good answers. What are you thinking will happen when a SaaS grows like Salesforce, with a very large number of tenants, where some of the tenants have very large databases? What will Nile do when the database just can't fit in a single Postgres cluster? Edit: Never mind, I see from your web site that moving tenants between databases is one of the main things you try to address.