cassandra中的数据模型

时间:2013-03-04 21:47:00

标签: nosql cassandra cassandra-0.7

我想询问有关我可以用于我的项目的cassandra中哪种数据模型的信息。让我详细讲述一下。作为java中的面向对象模型,我有2个类,事件和位置。 Events有几个属性,例如event_title, event_description, event_time, event_locations等。 Locations还有一些属性,例如address_name, longitude, latitude, city等。EventsLocations之间存在关联。其实我对我的数据模型有所了解。但我不确定它是否可以实施。我以为我只能使用一个CF和复合rowkey(DoubleType:DoubleType)来获取经度,latidute和子列,用于有序分区键空间框架中事件的元数据。如果我有一个例子,如何用hector API做这些会更好。因此,我需要在cassandra中实现数据模型以处理以下要求。

  1. 根据给定的经度和纬度,我需要返回接近这些给定经度和纬度的事件。
  2. 使用给定的经度和纬度以及event_title的搜索字符串,我需要返回与给定搜索字符串匹配的事件并接近这些给定的经度和纬度。
    谢谢。

1 个答案:

答案 0 :(得分:0)

1)将所有内容保存在单独的列族中是行不通的。要获得更快的读取,您必须对数据进行非规范化并为每种类型的查询创建列族。

2)在你的情况下,它有点复杂,因为你想要返回接近给定“经度和纬度”的事件。为此你必须找到一些解决方法,(比如你可以将一些经度和纬度作为行键),但要确保你有经度和纬度作为键的一部分。

3)一旦你设法将经度和纬度作为行键的一部分,你的第二个查询要求就会自动得到满足。例如:如果你选择范围解决方案,只需要找到给出经度和纬度的键。在一个范围内,然后搜索超级列名匹配事件,你就完成了。