RedisGraph / RedisGraph

A graph database as a Redis module
https://redis.io/docs/stack/graph/
Other
2k stars 229 forks source link

How do you use RedisGraph as a Database without making a 'Database Product'? #888

Open bionicles opened 4 years ago

bionicles commented 4 years ago

To leverage graphs as a tiny self-funded bootstrap startup, we'd like to use RedisGraph because we like the Cypher language and the innovative GraphBLAS integration

However, we can't really even evaluate this software because it's a Database with a license which forbids use in so-called "Database Products" ... It's really unclear what this means. How do you use a database without making a database product? Isn't like 99% of software a database product?

The alternative is to pay minimum $1400 per month for Redis Enterprise Pro, which is a bit insane, because that's like the rent on an apartment, just for a database for a MVP. I'd love to sign up and pay for Redis Enterprise to use RedisGraph, but it's not available for less than $1400, and there's no clarity on when an affordable option will be available.

Right now, january 2020, startups who just want to innovate with the Cypher Ascii art syntax, which is really cool and fun to work with, can't evaluate RedisGraph because of the license, and we can't afford to pay for it without selling our souls to blood-sucking venture capitalists, so we need to use Neo4j Aura, as Neo4j community is GPL scary copyleft license. ArangoDB is Apache 2.0 licensed which is epic, but doesn't have Cypher syntax. Not sure about Anzograph which just came out. Oracle has PGQL. TigerGraph GSQL doesn't draw the arrows intuitively and looks ridiculous. GraphGrid guys said they have Serverless Neo4j Beta, maybe that will work out.

It really would be sweet to use RedisGraph for our medical research startup but license legal nonsense and super high price to get started sucks all the fun out of it! Please help!

Can you please ask your leadership at Redis Labs to clarify the definition of "Database Product" and add a cheaper option to evaluate RedisGraph? We really don't need 1234567890 operations per second. We just want to use Cypher without managing servers

gkorland commented 4 years ago

Database product is clearly defined in the License, are you developing such product?

Database Product: any of the following products or services: 
(a) database; 
(b) caching engine; 
(c) stream processing engine; 
(d) search engine; 
(e) indexing engine; 
(f) machine learning or deep learning or artificial intelligence serving engine; 
(g) a product or service exposing the Redis API; 
(h) a product or service exposing the Redis Modules API; or 
(i) a product or service exposing the Software API.  
bionicles commented 4 years ago

@gkorland I don't know, because it's subject to interpretation and semantics, I wouldn't let customers use the RedisGraph API directly, they'd use my API and then my service would call to redisgraph

It's not clear from that definition what counts as a search engine + indexing engine. If I used RedisGraph and RedisSearch or Algolia to let medical researchers search their biotech reagents in their laboratories (ex: "What fridge contains Crispr to knock out Ras oncogene?") Then would that count as a "Search" or "Indexing" engine? Or would it be just an app that happens to use search and indexing?

It's weird to say you can't use a database in database products. Philosophically, couldn't anything with a database be construed as a database product? Totally understand why Redis Labs needs to protect its IP from cloud infrastructure companies, but this license is ambiguous, and I think it hurts your customers (and by extension, you) more than your competitors

I really just want to sign up for Redis Enterprise Essentials and use RedisGraph. That would be the best option because I wouldn't need to manage the Docker stuffs and could just code the apps. And I'd pay for it. I just can't afford $1400 a month which is the minimum for Pro, and it provides waaaaayyyyy more IOPS than I would need for a tiny prototype anyway.

If the modules could be used with Essentials, then more people would sign up and pay for it, rather than use AWS Elasticache or whatever. Plus, if you taught a Data Structures course, and you wrote a list of "Essential Data Structures" on the board ... wouldn't you put Graphs on that list? Most computer scientists would consider Graphs to be Essential, but Redis Enterprise Essentials doesn't include Graphs.

As developers of this project, can you guys please ask your leaders to allow paying customers for Essentials version to use the modules soon? As a startup we need to move fast, so basically I'm about to settle on using your competitors, and I bet every day that passes, more folks make the same call ... they'd like to use Redis Modules, but $1400 a month is way too much cost for an MVP to have a database. Other graph databases are available for literally 100x less money, and have free options. If we could get started with Essentials at the affordable $7 / month etc price, then we could grow our startups with RedisGraph, and eventually a few of those startups succeed (Because of how awesome RedisGraph is) then they upgrade to the Pro versions and pay wayyyyyyy more. They're not locked into your competitors from the start because you offer an affordable option for startups to use the database modules without headaches of guessing if apps which use databases are technically "database products" ... that's just semantics and legalese, and we're developers, not lawyers, right? We just want to use RedisGraph to make apps!

Literally, I would sign up right now, if you told me I could use redisgraph on redis enterprise essentials. Graph is an essential data structure, and redis is a data structure server, why not count RedisGraph as an essential and allow paying customers to use it?

Just one man's (passionate) opinion

bionicles commented 4 years ago
Screen Shot 2020-01-26 at 5 34 54 PM

Let's reduce it to cold, hard, economics.

Redis Labs income is determined by the number of paying customers multiplied by the amount they pay.

Just imagine you're a developer or project manager and you want to make a minimum viable product (MVP)

Critical decision: what database will you use?

You agonize over this decision because it makes a huge difference for your project.

You need JSON and Search, because that's table stakes for decent web / mobile apps in 2020.

If you use Redis Enterprise, you need to pay a minimum of $1400 PER MONTH to get JSON and Search. If your app sells for $10 (that's pretty high these days) you must convert 140 paying customers each month just to pay for the database. That's before you start paying for hosting, business licenses and fees, marketing, and your own cost of living. You could use the RedisMod docker image but the license is unclear. Your app uses a database. Does that make it a "database product?" You don't know. Docker is out. So is Redis Labs.

If you use MongoDB, ArangoDB, DynamoDB, DocumentDB, OrientDB, PostgreSQL, MySQL, Oracle, FaunaDB, any of 100 databases, you can get JSON capabilities for FREE. Plus, you can run them in docker containers because the license is clear.

If you use Algolia you can get search for free AND they give you React components to handle the search. You can also easily search with most of the above databases at zero additional cost.

If you use Neo4j Community edition, all you gotta do is run 1 docker image on AWS ECS and you're using a badass graph database. You can easily add a load balancer. It's gonna scale just fine for an MVP.

This decision being obvious, you decide not to use Redis Enterprise. You sign up with Redis Labs' competition and build your MVP for free. Great news! It succeeds! Lots of people sign up. You need to scale up your back end.

Do you: A) Start to shell out $1400 for Redis Enterprise "Pro" and re-document re-test re-develop the entire backend for your production app to use Redis Enterprise? B) Provision additional capacity for your existing back end which doesn't pay Redis Labs a dime?

What do you do? Rewrite your whole app and pay $1400 / mo? Or scale up your current database?

Obviously, the majority of people are going to just scale their existing solution rather than switch to Redis Labs. Redis already failed at the key decision point: the database for the MVP. Once the MVP is delivered, it's way, way harder to justify paying for Redis Labs. Yet, for whatever reason, Redis Labs does not provide the critical features necessary for a great MVP unless you pay $1400+, which is simply not economically viable for the vast majority of MVPs.

Does that make sense? You're targeting these modules at big existing projects, but those projects already have big, existing databases. The best time to sell someone a database solution is when they're building their MVP. Not after they are making >>> $1400 a month!

Now just imagine you could sign up for $7 a month and use Search, JSON, and Graphs, plus all the other Redis data structures. Obviously more people are going to build their MVP with Redis Labs, and then your weakness becomes your strength: when their app blows up, it's much easier for them to scale it with you, than to switch to another provider.

Does that make sense? That's why freemium models are so hugely popular. You want to get them hooked, then make money over the lifetime of the customer... that's pretty impossible if it costs $1400 to get features you get for free with other options. Anyway, as a startup founder currently agonizing over what database to use, I'd love to be able to pick Redis Labs to grow my app, but Redis Lab's offering just does not make business sense. Sure, your tech is cool, but your customers need to make money, too!

Every day Redis Labs does not offer essential features like Search, JSON, and Graphs at an affordable price costs Redis Labs

The number of customers who need at least one of these features times the lifetime value of one customer

if it's 1 customer per day and each customer is worth $10,000, then it costs Redis Labs ten thousand dollars a day to deny paying customers access to Search, JSON, and Graphs.

if it's 10 customers per day and each customer is worth $100,000, then it costs Redis Labs a million bucks a day to deny paying customers access to Search, JSON, and Graphs.

joshdurbin commented 4 years ago

Aside from the why, I do think that "database product" as its defined now is vague. I think I know what the license is going for an understand, why, perhaps maybe it's worded the way it is. However, I think you could argue literally anything that uses persistence that isn't storing data to flat file is a database product or an extension thereof. It would be good to clarify that further in the license.

Ex: a product recommendation engine, something like I wrote about here. If I were using RedisGraph to do this for stores on a SaaS commerce platform, say Shopify, is that a violation of the license? Shopify isn't in the business directly of providing indexing, streaming, caching, searching, but there are functions and features of their product that use those systems -- they're offered in the context of commerce.

The way things are defined it's sort of clear RedisLabs is protecting itself against AWS, Google, etc... from taking this tech and wrapping a paid service around it, though it's very broad.