0

I work for a small company who wants to expand an existing system but by doing so there are also some issues. The system itself is used to store images and video's.

Always being available

So we talked to our host and they recommended us to use Ceph and Cassandra. Now I did some research on both of them and I really like the idea of Ceph - but Cassandra.. well, it would take a while for the existing system to be adapted to it.

The reason they recommended Cassandra was so our database would always be available. Now - the DB won't increase massively, it would only be used to keep some user-info, image-tags and other small meta-data.

Another issue is that many queries use "like" in order to find the tags. CQL does not support this.

Now we don't have any developers who have knowledge of Cassandra so it might take some time to take used to that.

My question

  • Is there an alternative for Cassandra, preferred a relational database (so not NoSQL) which is still highly available (like when one server goes down, another takes over).
  • In case there isn't - how long would it take to get used to Cassandra's query language for relatively inexperienced developers (~ 1 year of experience), including the knowhow of how to adapt a system to it.
  • Just in case I didn't do my research properly, is Cassandra even the system we are looking for, the DB is pretty much only used for storage and some small functions.
  • In case you recommend a NoSQL language, what other options do I have of searching and finding data (as we now do by using " ..where x like 'something'")
Christiaan
  • 35
  • 6
  • `create table tags (tagid, videoid, tagstring)` and now you don't have to use `like` :D – Niet the Dark Absol Apr 14 '16 at 11:54
  • With Cassandra, I don't believe you can search on a non-key or index or did I maybe misread that? – Christiaan Apr 14 '16 at 11:56
  • I don't know anything about Cassandra, but I'd be very surprised if a DB didn't support non-unique keys. Put an index on `videoid` and you should be set. – Niet the Dark Absol Apr 14 '16 at 11:58
  • Since you're using PHP and some sort of relational database, it doesn't make much sense to go down the route of changing technology, learn its quirks, its language and what not. The best approach is to utilize what you already know and then research whether you can scale that (and you can, it's actually trivial to do so and NoSQLs use such approach under the hood). – Mjh Apr 14 '16 at 12:02
  • @Mjh **it's quite trivial to scale any database** If it was so trivial, there wouldn't be a need for Facebook to invent Cassandra or for Netflix to deploy Cassandra on thousands node, **Captain Obvious** – doanduyhai Apr 14 '16 at 12:02
  • @doanduyhai You seem to forget that Facebook and Netflix are world-leaders, our dreams for now are smaller, maybe one day big but I don't see that happening in 5 years. – Christiaan Apr 14 '16 at 12:06
  • 1
    Sure but stating that *it's quite trivial to scale any database* is just non sense... – doanduyhai Apr 14 '16 at 12:07
  • @doanduyhai - it is trivial to scale any database, and I don't think that Facebook can be considered any type of high end technology company given the fact they start inventing before they do their research. Now, if you know what's going on, and if you're not the type of developer who wants to stick everything in one place, then yes - it's absurdly trivial to scale the network traffic, reading and writing. You don't have to agree with me, but the fact is that Facebook didn't do anything special in any of their so-called projects, from HHVM to Cassandra to React (actually they all suck). – Mjh Apr 14 '16 at 12:10

1 Answers1

0

Another issue is that many queries use "like" in order to find the tags. CQL does not support this.

It does, since Cassandra 3.5 with SASI secondary index

Now we don't have any developers who have knowledge of Cassandra so it might take some time to take used to that.

It's not a problem, you have hours of free online video and training at Datastax Academy

In case there isn't - how long would it take to get used to Cassandra's query language for relatively inexperienced developers (~ 1 year of experience), including the knowhow of how to adapt a system to it.

Just watch the data modeling videos, you should grasp quickly the fundamentals ideas behind Cassandra data model.

Just in case I didn't do my research properly, is Cassandra even the system we are looking for, the DB is pretty much only used for storage and some small functions.

If you're looking for extreme high availability (0 downtime) Cassandra is for you.

If you can handle a downtime of some minutes, there are also other systems that can be a good fit.

doanduyhai
  • 8,712
  • 27
  • 26