我一直在使用mySQL作为应用程序一段时间,而我收集的数据越多,得到的速度就越慢。所以我一直在研究NOSQL选项。我在mySQL中的一件事是从一堆连接创建的View。该应用程序显示网格中的所有重要信息,用户可以选择范围,执行搜索等。在此数据集上。标准查询的东西。如何过滤Cassandra中的数据?
看着Cassandra,所有东西都已经根据我在storage-conf.xml中提供的参数进行了排序。所以我会在SuperColumn中使用特定的字符串作为密钥,并在下面的Columns中保留一堆数据。但是我只能按一列进行排序,而且我无法在列中进行任何真正的搜索,而无需拖动所有SuperColumn,并循环访问数据,对不对?
我不想跨不同的ColumnFamilies重复数据,所以我想确保Cassandra适合我。在Facebook,Digg,Twitter中,他们有很多搜索功能,所以也许我只是没有看到解决方案。
有没有一种方法可以让我在Cassandra中搜索或过滤SuperColumn或其关联列中的特定数据值?如果没有,是否有另一个NOSQL选项?
在下面的例子中,似乎我只能查询phatduckk,friend1,John等。但是如果我想找到居住在城市的ColumnFamily中的任何人==“Beverley Hills”呢?可以在不返回所有记录的情况下完成吗?如果是这样,我可以搜索城市==“贝弗利山”和状态==“CA”?似乎我也无法做到,但我想确保看看我的选择是什么。
AddressBook = { // this is a ColumnFamily of type Super
phatduckk: { // this is the key to this row inside the Super CF
friend1: {street: "8th street", zip: "90210", city: "Beverley Hills", state: "CA"},
John: {street: "Howard street", zip: "94404", city: "FC", state: "CA"},
Kim: {street: "X street", zip: "87876", city: "Balls", state: "VA"},
Tod: {street: "Jerry street", zip: "54556", city: "Cartoon", state: "CO"},
Bob: {street: "Q Blvd", zip: "24252", city: "Nowhere", state: "MN"},
}, // end row
ieure: {
joey: {street: "A ave", zip: "55485", city: "Hell", state: "NV"},
William: {street: "Armpit Dr", zip: "93301", city: "Bakersfield", state: "CA"},
},
}
你能做到这些类型的操作与任何其他NOSQL类型设置?您如何看待像Facebook这样的网站在他们的网站上使用Cassandra进行各种搜索/查询?有多种方式来搜索数据。你认为它在某些地方是重复的,并且只有多个ColumnFamilies允许以不同方式搜索数据? – Nathan 2010-09-23 14:48:22
@Hallik:他们可能在不同家庭中复制数据,当然我不能确定。这是一个选择;我在某个项目中使用Cassandra来跟踪用户的活动,组织等的活动,并且我创建了一堆用于提供/获取相关更新的SuperColumnFamilies。我所需要做的就是执行查找。 – 2010-09-23 14:54:55
也许我只是需要更努力地摆脱关系型数据库的心态。我确信有一种最佳方式可以将我的数据从MySQL中移出,并在Cassandra的应用程序中获得相同的功能。感谢您的输入。 – Nathan 2010-09-23 15:03:30