卡桑德拉和ASP.NET(C#)

5

我有兴趣创建关于cassandra服务的门户网站,因为我在100万条记录开始时遇到了一些性能和规模问题。这些问题肯定可以解决,但我对其他选择很感兴趣。

我的主要问题是更新所有必要的索引的成本,以使阅读更快。

首先,cassandra适合asp.net程序员吗?我的意思是,也许有其他项目值得一看。

其次,你能提供任何关于如何从C#开始使用cassandra编程的文档示例吗?


1
http://teddziuba.com/2010/03/i-cant-wait-for-nosql-to-die.html。 - Russell Steen
http://codebetter.com/blogs/karlseguin/archive/2010/03/29/nosql-for-the-rest-of-us.aspx - John Sheehan
2
我建议不要在生产环境中使用Cassandra。 - Pierreten
@Pierreten - 两年多过去了,您是否仍然同意您的评论? - BozoJoe
6个回答

11

自从我处理一百万条记录后,就面临着性能和规模方面的问题。

也许你的设计并不好,NoSQL并不能解决糟糕的设计问题。我有数十亿行数据表,95%的响应时间都在一秒以内。同时,你所说的更新索引是什么意思,是指更新统计信息还是重建索引?


我很高兴它对你有用。 毫无疑问,这对我来说是最可能的(也是最便宜的)方式。然而,他一个月前遇到了第一个问题,找到了一篇关于如何使用索引统计的文章,将其应用于我们的数据库,一切都很好……持续了两个星期。 因此,我想四处看看,并了解有哪些选项。 - st78
你是否启用了自动更新统计信息,或者你是否有一个任务来更新统计信息? - SQLMenace

3
自从我面对一百万条记录的性能和规模问题以来,我就需要进行翻译相关的技术内容。
你知道,对于现代数据库来说,一百万是一个不可忽略的数字,你不能无视实际需求而做出完全荒谬的小规模数据处理。少于一百万就算"微不足道"。我有一张包含八亿行的表格,并通过它运行了很多SQL语句——完全没有问题。
首先,Cassandra是否适合ASP.NET程序员?
我更推荐学习基本的SQL书籍、阅读文档,或者可能在问题上投入一些硬件。因为:拥有非常糟糕的硬件将弱化所有的数据管理系统。

3
如果您正在为.NET应用程序使用Cassandra,请查看Aquiles。我根据公司需求开发了它。如果您发现它有用或需要任何帮助,请告诉我。

2

您无法真正谈论Cassandra文档。网上有很多部分教程。
您可能需要在虚拟机中设置Linux,因为Windows构建过程非常具有挑战性,至少可以这样说。(http://www.virtualbox.orghttp://www.ubuntu.com

以下是操作步骤:
http://www.ridgway.co.za/archive/2009/11/06/net-developers-guide-to-getting-started-with-cassandra.aspx
请注意,自此教程编写以来,Cassandra SVN URL和代码示例已更改。

这是另一个C#客户端:
http://github.com/mattvv/hectorsharp

这是一些示例代码:
http://www.copypastecode.com/26752/

请注意,您需要从Sun下载最新的Java开发工具包(JDK)用于Linux。 它不在Ubuntu 10.04的存储库中。 然后您需要键入:
export JAVA_HOME="/path/to/jdk"

为了让Cassandra找到你的Java安装,你需要:
此外,您可能还想查看: http://en.wikipedia.org/wiki/NoSQL 特别是分类部分很有趣。确保Cassandra是您问题的正确NoSQL解决方案,例如,如果您的问题实际上是一个图形问题,请使用Neo4J。
另外,您需要确保您的NoSQL解决方案符合ACID标准。
例如,Neo4J是唯一符合ACID标准的NoSQL图形引擎。
编辑:以下是Windows的快速入门指南,无需编译:
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/


2

如果您不想使用Cassandra,可以考虑一下:ravendb。据说它是使用.Net创建的文档存储库。它具有Linq集成,并且速度非常快(再次强调,据说如此)。

对于任何新技术,都要根据自己的特定情况进行评估,并检查其是否为成熟技术(是否有主流客户在使用它)。

在尝试新技术之前,请先尝试优化当前解决方案。检查查询是否快速,索引是否正确,并尝试通过添加缓存来减轻负载。

最后但并非最不重要的是,如果向SQL机器添加一些处理器可以解决问题,那么这通常是更便宜的解决方案。


1

如果你想尝试一些新的东西,那么与其选择noSQL,不如考虑尝试使用数据库集群。

这个想法是当两台机器同时搜索原始数据库的一半时,你可以在不完全重新设计现有数据库的情况下将搜索时间减少一半。


谢谢,我正在考虑说服客户尝试使用Microsoft Azure - 它看起来很容易开始使用。 - st78
我相信你的意思是“尝试分片”你的数据库。集群化不会解决你的性能问题。参考:http://en.wikipedia.org/wiki/Shard_(database_architecture) - BozoJoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接