5

I am interested to create portal on cassandra services, since I faced some performance and scale issues starting from 1 million of records. Definitely, it could be solved, but I am interested on other options.

My main issues is cost of updating all necessary indexes, to make reading fast.

First, is cassandra is good way for asp.net programmers? I mean, maybe there is some other projects, which worth to take a look

And second, can you provide any documentation samples on how to start with cassandra programming from C#?

st78
  • 8,028
  • 11
  • 49
  • 68

6 Answers6

11

since I faced performance and scale issues starting from 1 million of records.

Maybe your design was not that good, NoSQL is not a magic bullet for bad design. I have multi billion row tables and 95% of the response is sub second. Also what do you mean by updating indexes, do you mean updating statistics or rebuilding indexes?

SQLMenace
  • 132,095
  • 25
  • 206
  • 225
  • I am glad that it works for for you. Definitely, this is most possible (and cheapest way) for me. However, he had first issue month ago, found article about how to use index statistics, applied it to our database and everything was fine... for 2 weeks. So, i want to look around and found out about what options are – st78 Mar 29 '10 at 17:18
  • do you have auto update stats enabled or do you have a job that will update the stats? – SQLMenace Mar 29 '10 at 17:24
3

since I faced performance and scale issues starting from 1 million of records.

You know, the one million mark for modern databases is where it is not something "totally ridiculously small" where you can ignore actually knowing what you do. Below one million is "tiny". I have a 800 million row table and get a LOT of sql running through with it - no problem at all.

First, is cassandra is good way for asp.net programmers?

I would more suggest a basic book about SQL, reading the documentation and POSSIBLY throwing some hardware on the problem. As in: having totally bad hardware will kill all data management systems.

TomTom
  • 61,059
  • 10
  • 88
  • 148
3

If you are using Cassandra for your .NET Application take a look at Aquiles. I developed it based on my company needs. If you find it useful or need any help let me know.

2

You can't really speak of Cassandra documentation. There's a myriad of partial tutorials on the web.
You may want to setup Linux in a virtual machine, because the windows build process is quite challenging, to say the least.
(http://www.virtualbox.org, http://www.ubuntu.com)

Here's the howto:
http://www.ridgway.co.za/archive/2009/11/06/net-developers-guide-to-getting-started-with-cassandra.aspx
Note that the cassandra SVN url and the code sample have changed since the writing of this tutorial.

Here's another C# client:
http://github.com/mattvv/hectorsharp

And here some sample code:
http://www.copypastecode.com/26752/

Note that you need to download the latest Java Development Kit (JDK) from Sun for Linux. It's not in the repositories of Ubuntu 10.04. Then you need to type

export JAVA_HOME="/path/to/jdk"

in order for Cassandra to find your Java installation.


You might also want to take a look at:
http://en.wikipedia.org/wiki/NoSQL

Especially the taxonomy section is interesting.
Make sure Cassandra is the right type of NoSQL solution for your problem, e.g. use Neo4J if your problem actually is a graph problem.

Also, you need to make sure your NoSQL solution is ACID-compliant.
For example, Neo4J is the only ACID-compliant NoSQL graph engine.

Edit: Here's a jumpstart guide for Windows, without compiling:
http://coderjournal.com/2010/03/cassandra-jump-start-for-the-windows-developer/
http://www.ronaldwidha.net/2010/06/23/running-cassandra-on-windows-first-attempt/
http://www.yafla.com/dforbes/Getting_Started_with_Apache_Cassandra_a_NoSQL_frontrunner_on_Windows/

Stefan Steiger
  • 78,642
  • 66
  • 377
  • 442
2

Instead of cassandra you might take a look at: ravendb. Supposedly it is a document store made with and created for .Net. It has Linq integration, and is (again supposedly) very fast.

As with any new technology, read if it helps you with your specific case, and check if it is proven technology (Do they have mainstream clients using it).

Before you go into this route see if you can't optimize your current solution first. Check if your queries are fast, if the indexes are done correctly, and if you can't remove load by adding caching.

Last nut not least, if adding some processors to your SQL machine might fix issues, it is typically a much cheaper solution.

Toad
  • 15,593
  • 16
  • 82
  • 128
1

If you want to do something new, then instead of going for noSQL, you might want to consider trying a database cluster.

The idea is when two machines each search half of the original database at the same time, you have half the search time without totally redesigning your existing database.

Stefan Steiger
  • 78,642
  • 66
  • 377
  • 442
  • Thanks, I am thinking to convince client to try Microsoft Azure - it looks to be simple to start to use it – st78 Aug 30 '10 at 19:24
  • I believe you meant to say "try sharding" your database. Clustering wont help your performance problem. http://en.wikipedia.org/wiki/Shard_(database_architecture) – BozoJoe Aug 17 '12 at 15:49