Make Multi-Tenancy open source

Relaxe111 commented :

Hello, it looks like multi-tenancy support is added to Enterprise feature. I would kindly ask to reconsider this feature to make it open source or to make a more flexible pricing plan. Locking this feature in Enterprise version could be a big barrier in widely adoptoption of dgraph, at least in the EU it will be for sure.

Willem520 commented :

Hello, it looks like multi-tenancy support is added to Enterprise feature. I would kindly ask to reconsider this feature to make it open source or to make a more flexible pricing plan. Locking this feature in Enterprise version could be a big barrier in widely adoptoption of dgraph, at least in the EU it will be for sure.

hi, multi-tenancy is a popular feature, many developer like us need this feature to improve our project. Personally, I hope it could be free. thx

brianbroderick commented :

I mentioned this in #2693 but wanted to make sure people see this.

First, I want to say that I love Dgraph and am an evangelist for your product. I’ve given several talks and am constantly trying to get people interested in Dgraph.

There’s one last hurtle to start getting actual adoption, and that’s the ability to have multiple schemas in a dev & test environment.

Most companies in my area use MySql, Maria, or Postgres. Therefore having the ability to have many schemas is something people take for granted and is something people are not willing to pay for.

It’s a challenge to get people to switch from something they are comfortable with. Making this as painless as possible is the only way to get widespread adoption.

There are many reasons to have multiple schemas; for example, it’s typical to have a dev, test, and prod environment with their respective schemas. This makes it so the test database can be recreated before each test run. Right now, the only way to accomplish this is to either have multiple instances of Dgraph running, or to add a prefix to all predicates.

If I only want to clear test environment predicates, adding a prefix complicates queries like this: &api.Operation{DropAll: true}, which I run before any tests. It would also complicate Go structs when determining the right predicate values in JSON.

It’s also typical to work on many micro services at a time, but these micro services should not have any chance of data colliding with each other; they should be completely isolated. It doesn’t seem realistic to have 10+ instances of DGraph running at the same time on a laptop (5+ micro services, each with a dev and test environment)

Therefore, I want to second everyone’s comments about supporting multiple schemas in the free version. The Saas offering isn’t going to help my dev and test environments on my laptop.

Relaxe111 commented :

This is absolutely true! That’s why I kindly asked to reconsider multi-tenancy to be open-source! I try for last year to introduce dgraph in my company but the biggest barrier to convincing my boss is support for multi-tenancy. Last week we had a new discussion and again everyone in my company is skeptical against dgraph because of lack of multi-tenancy in the community version. I can confirm that for multi-tenancy my company isn’t willing to pay. Having multiple instances of DB for different Environments dev/ test is an issue in dgraph. I just hope that owners of such amazing product will understand that multi-tenancy will not be an argument for companies to buy a license to use dgraph enterprise. But having multi-tenancy open-source will be an argument to adopt it. It is more likely to switch to Enterprise for a company that uses already dgraph than to switch from well known traditional DBS to dgraph enterprise or dgraph open-source without multi-tenancy. I truly believe that bigger adoption of dgraph will be, bigger Enterprise mass dgraph will have. But without open-source multi-tenancy, the majority of potential future Enterprise users will ignore dgraph to adopt it now as open source.

marvin-hansen commented :

My company isn’t going to pay for multi-schema / multi-tenancy because any other OSS DB brings it already to the table. Charging for something you get in most OSS DB’s for free and that is legally mandated in certain industries or countries is just completely ridiculous. Please start listening to your customers!

Please add GPU acceleration or support for in-DB machine learning to bring at least some tangible value to the enterprise version that would justify a purchase.

shekarm commented :

Hi, I investigated different databases and it appears that multi-tenancy is not something you get free with other databases either. Any implementation of multi-tenancy will require access control lists and other security-related features and most databases require an enterprise license for the same. In someways, Dgraph is following those models.

Relaxe111 commented :

Hello @shekarm could you please give concrete examples of such databases?
Thnks.

Relaxe111 commented :

I respectfully disagree with you. Multi-tenancy and ACL are different features which can’t be put together. In my experience, most (if not all) dbs multi-tenancy is open source. But ACL not so many dbs offers that feature either free or Enterprise.

seanlaff commented :

Data isolation (which is falling under the multi-tenancy bullet) is critical for dgraph to see success in our company. We have many interested parties, but lacking that feature makes it a non-starter.

If dgraph found a place in our stack, I could see us growing into the enterprise tier (e.x needing granular ACL, fancier snapshot/restore, etc), however lacking rudimentary data isolation in the free-tier hampers our ability to start the journey/build PoCs.

Specifically- risk of schema collision is the real blocker

shekarm commented :

Currently, Dgraph implements multi-tenancy and user authentication as part of our ACL implementation, to validate users and their access credentials. We will look at this implementation and see if it makes sense to isolate the credential authorization required for multi-tenancy.

fpattyn commented :

Can you reconsider adding multi-tenancy to the open source distribution? Being able to define different graphs in one database helps to solve the ‘provenance’ issue when integrating data from different sources. Every source adds data to a separate graph. It’s a cool feature to be able to show where each data source contributed to a the complete knowledge graph.

ganisback commented :

If does not support multi-tenancy in open source distribution, I have to back to janusgraph.
I think it’s a basic feature for a graph database.

Willem520 commented :

Hi,I want to know when the multi-tenancy will be supported in open source distribution. it is really important to me.I have used in product. single-tenancy. it means that I have to allocate server resources to each business. if I have 100 business, it will took a lot of server resources

ganisback commented :

@Willem520, from this roadmap, they do not plan support this feature in community edition, it will be included in enterprise edition.

Relaxe111 commented :

Well this is not exactly that. According to comments written earlier, they will consider if it will make sense to open source multi-tenancy. So I think than to speculate around this issue, will be better to wait for an official announcement from Dgraph team. )

Willem520 commented :

@Willem520, from this roadmap, they do not plan support this feature in community edition, it will be included in enterprise edition.

I think they will reconsider this feature

grizzly-monkey commented :

We were evaluating dgraph for our SaaS application. The planned feature that we would need is Multi-Tenancy
Most of the DBs give this as part of OSS code and is a basic necessity these days.
It would be great if you give it a thought to have this as part of open source road map.

Thanks
Jeet

liveforeverx commented :

Hi, @manishrjain !

I would like to join all other people here (at least 5) with a question about multitenancy.

I think, that almost everyone, who uses DGraph is interested or can profit with this feature or get a better user experience by using DGraph. Even, who just runs pet projects and not able to buy a full licence would be interested in this feature. Just not to run different Dgraph’s instances for different pet-projects and mostly 2 Dgraph instances per pet project (for example, because dataset in dev and test is different and test is cleaned, so instead of running one Postgres, you need most probably to run multiple DGraphs per any project).

I know people, who simply do not take a database as a serious database without this feature (and it was most major no in adaptation on my previous company, as I remember and one of the important points in my current company) and it was one of the most oft complaints I heard from people on meetups.

It would be great, if you would think about making this feature accessible to everyone, it would be great, if it would be Open Source.

Just some examples:
Neo4j offers it for free: https://neo4j.com/developer/manage-multiple-databases/
ArangoDB offers it for free: https://www.arangodb.com/docs/stable/data-modeling-databases-working-with.html
OrinetDB offers it for free: http://orientdb.com/docs/last/OrientDB-REST.html#post---database

I personally do not know another database, which doesn’t have this feature or one, which offers this feature in Enterprise edition.

But, even, if it would be a one-time payment, for an acceptable price for the sole developer for this feature, I would like to consider buying it even for personal use on my development machine to get a better UX from DGraph usage, as I know it from any other database I used before personally and professionally. There was an opinion that other databases offer it not for free, I don’t know any other database, which has multiple databases, has an open-source version and doesn’t offer it for free.

My personal example: at the moment, I reset DGraph by every switch between developing an adaptor for DGraph and my pet-project and after the switch, I refill my pet-project with data every time. My tests on the pet-project carefully designed to clean every rubbish they create by themself to avoid this problem and be able to use dev + test on the same database.

P.S. I gave talks in meetup about DGraph and Elixir, I’m the maintainer of the most advanced Elixir driver for Dgraph.

sorenhoyer commented :

dgraph looks dope, but if multiple databases / multi tenancy support is only planned for enterprise customers I think most people doing SaaS applications, at least startups will just look elsewhere (eg. ArangoDB) which could be a real shame and possibly a lot of lost revenue (eventually). I’m sure people will be willing to pay once they get a decent amount of customers on, so if you don’t want to give it away for free, maybe make a limit of say 200, 500 or 1000 databases (1 for each customer/tenant) for the Community version. If you need more I’m sure you can also pay for it. I for one is in that situation right now. I’d definitely have started my first SaaS on dgraph if only you had planned this as a community feature, but in the end decided to go with Arango due to this :confused: