DataStax, the company behind a commercial Apache Cassandra distribution, writes about Cassandra internals, testing, and data modeling.
HN links it for Cassandra explanations and its argument that no true native graph database exists. One commenter found getting started on DataStax easy.
Both MongoDB and MySQL were started by people who had no background in writing databases. They were blazingly fast compared to existing RDBMS, but once they started adding features that actually provided things that people assumed a database should have (primarily in area of consistency) they no longer look that great.
What makes MySQL better than MongoDB is that is older and closer to what a database should do. They still have their warts and some of the warts might not be removed, since it would break compatibility.
At this point MongoDB does not have anything going for them. Its key benefit was their speed, but as it turned out that was because data was stored mostly in RAM if Mongo crashed or there was a power loss then you most likely would lose significant (possibly all) of your data. Since then they fixed that and make it more reliable, it is worse in performance than a relational database [1] and it also doesn't scale well [2]
Essentially NoSQL databases were designed to be simple and without relational features in exchange for scalability and performance. Mongo you get neither. Mongo doesn't even try to benefit from the CAP theorem. It's neither always consistent nor always available [3].
You generally should always use a relational database, because in majority of cases you do have some schema and you expect data to be consistent.
NoSQL databases (especially ones that are AP in CAP) are generally good for specialized use cases, things that have no relations and…
REMOTE, wherever
DataStax makes the enterprise edition of Cassandra, the NoSQL db for serious applications. We have developers all over the world and a 100% remote working environment. Some of the development is open source (we are the primary contributors to Cassandra core, which is an Apache Foundation project...)
I just joined recently; as a senior developer with startup experience, I had lots of offers from various companies. The reasons I chose DataStax were:
- 100% remote means I can work from wherever I want (I like to travel) and whenever, within reason, as long as I get my stuff done
- the opportunity to work on interesting new technology that is rapidly changing and being adopted by a lot of Fortune 100, etc
- they have been vocal about their plans to IPO in the next few years and are growing like crazy
Very competitive salary, lots of open positions: Java, Python, JS, I've even seen some Clojure. Also, SDET and technical writing.
http://www.datastax.com
http://www.datastax.com/company/careers
Hit me up, esmith at datastax dot com, if you'd like an intro.
DataStax | Core Engineer | 100% REMOTE | http://www.datastax.com/company/careers
DataStax builds fully distributed database technology inspired by Apache Cassandra to power applications that need massive scale, 100% uptime, and near-linear scalability on commodity hardware. If you're into "low-level" Systems Java, high performance computing, and distributed computing this role is for you; it's a high profile position working on core database technologies in our flagship product, rapidly making a big impact on the entire business. We’re an international, fully remote team of highly independent engineers looking for like-minded, quality-focused and seasoned developers to join our ranks. We welcome strong, reasoned opinions on our team and believe in healthy debate, respect, and collaboration.
If you're interested, please reach out to josh dot mckenzie at datastax dot com
Recommended reads on the native vs non-native topic:
* https://www.datastax.com/dev/blog/a-letter-regarding-native-graph-databases (tldr; there is no such thing as a native graph database)
* https://neo4j.com/blog/note-native-graph-databases/ (tldr; native graph databases do exist)
Regarding Cypher vs Gremlin: serialization could be a thing but what matters among other things are efficient query optimizations, algorithm and (physical) data model. Ultimately, databases are all reading from 1-dimensional spaces (RAM or disk), either randomly or (best) sequentially. If you can colocate vertices with their respective edges, you're fine: this is trivial for graphs with no edges or graphs that form a linear chain. If not, then things start to become fun, especially in a distributed way. This will impact performance; the language, not so much.
You don't really need to know anything about Hadoop Map/Reduce to start using Spark. Spark has its own, more powerful "map-reduce".
You need familiarity with one of the storage platforms supported by Spark - currently these are Hadoop File System and Apache Cassandra. The easiest way to play with Cassandra is:
1. grab a copy of DSE (free to test or develop) and install it (download here: http://www.datastax.com/download)
2. launch 'cqlsh', create a Cassandra keyspace and a table and insert a few rows into it
3. launch 'dse spark' and query your data with e.g. sc.cassandraTable("keyspace", "table").toArray
Doing it with Apache Cassandra (not DSE) is going to be slightly harder, because besides installing Cassandra, you'll have to set up standalone Spark cluster (see Spark docs), then follow the instructions in README.md of the driver.
Cloud Software Engineer [SF Bay Area or Austin, TX Preferred, Full Time]
Distributed Application Engineer - OpsCenter [Anywhere, World, Full Time]
Frontend Technical Lead - OpsCenter [Anywhere, World, Full Time]
Java Engineer [Anywhere, World, Full Time]
Java Engineer (Windows) [Anywhere, World, Full Time]
Performance Software Engineer [SF Bay Area or Austin, TX Preferred, Full Time]
Software Testing Engineer for Cassandra [SF Bay Area, United States, Full Time]
For full list of positions see: http://www.datastax.com/company/careers
Tech used: Python, Java
DataStax is a commercial entity behind the Apache Cassandra project, the open source NoSQL database widely-aknowledged as the best foundation for tackling the most challenging big data problems.