関連keyspaceに気をつけろ
cassandra_objectでは、associationメソッドを使って、belongs_to, has_manyに当たるものを宣言します。
http://github.com/NZKoz/cassandra_object/blob/master/test/fixture_models.rb
よくよく見てみると、関連のためのFKのようなカラムの定義がありません。どこに保存されているんだろうと思って調べてみたら、別のKeyspaceに保存されてました。
http://github.com/NZKoz/cassandra_object/blob/master/lib/cassandra_object/associations/one_to_one.rb
http://github.com/NZKoz/cassandra_object/blob/master/lib/cassandra_object/associations/one_to_many.rb
それぞれにcolumn_familyというメソッドが定義してあり、関連先のidなどはその名前の別のカラムファミリに、関連名をスーパーカラムとして、insertされます。
なので、cassandra_objectのテストで投入されたデータは以下のようになります。
cassandra> get CassandraObject.Customers['091e6658-6a33-11df-8608-e83b940b4438'] => (column=schema_version, value=0, timestamp=1275036334211015) => (column=last_name, value=Koziarski, timestamp=1275035327327099) => (column=first_name, value=Michael, timestamp=1275035327327099) => (column=date_of_birth, value=1980-08-15, timestamp=1275035327327099) Returned 4 results. cassandra> cassandra> get CassandraObject.Invoices['564ebdb8-6a35-11df-957a-ba403d66eadf'] => (column=total, value=3000.0, timestamp=1275036315832317) => (column=schema_version, value=2, timestamp=1275036315832317) => (column=number, value=1, timestamp=1275036315832317) => (column=gst_number, value=66-666-666, timestamp=1275036315832317) Returned 4 results. cassandra> cassandra> get CassandraObject.InvoiceRelationships['564ebdb8-6a35-11df-957a-ba403d66eadf'] => (super_column=customer, (column=^JY?j5?0hY?k8?, value=091e6658-6a33-11df-8608-e83b940b4438, timestamp=1275036329214711)) Returned 1 results. cassandra> cassandra> get CassandraObject.CustomerRelationships['091e6658-6a33-11df-8608-e83b940b4438'] => (super_column=invoices, (column=^Gb?j5?F??, value=564ebdb8-6a35-11df-957a-ba403d66eadf, timestamp=1275036329195299)) Returned 1 results. cassandra>