2013-03-04 59 views
0

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

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

回答

0

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

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

3)一旦您设置了经纬度作为行键的一部分,您的第二个查询要求将自动满足。示例:如果使用范围解决方案,只需找到给定经度和纬度在一个范围内,然后搜索超列名匹配事件,并完成。

+0

感谢萨马特的回答。我已阅读cassandra,但有些部分对我仍然不清楚。那么,我可以一起使用经度和纬度作为行键吗? – gabby 2013-03-05 10:50:45

+0

因为我没有足够的关于要求和经度和纬度的知识,所以我不能对此进行评论,但是为了简化这些事情需要一个国家的例子,你想找到那些在特定国家的事件,对于这个你应该对rowkey“国家”列出所有事件列表和他们的详细信息。现在决定如何处理经纬度相同的东西 – samarth 2013-03-05 11:31:09