views:

1200

answers:

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#?

+6  A: 

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
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
Sergey Osypchuk
do you have auto update stats enabled or do you have a job that will update the stats?
SQLMenace
+1  A: 

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
+1  A: 

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.

Quandary
Thanks, I am thinking to convince client to try Microsoft Azure - it looks to be simple to start to use it
Sergey Osypchuk
A: 

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/

Quandary
A: 

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