我寫了一個測試Cassandra的測試程序,並且在讀取數據時遇到了問題。看起來像卡桑德拉有時會拿一把鑰匙換另一把鑰匙。爲什麼Cassandra對字節鍵(與Lazyboy)有點奇怪?
這是我的測試程序:
from lazyboy import *
from lazyboy.key import Key
import uuid
import random
class TestItemKey(Key):
def __init__(self, key=None):
Key.__init__(self, "TestMX", "TestCF", key)
class TestItem(record.Record):
def __init__(self, *args, **kwargs):
record.Record.__init__(self, *args, **kwargs)
self.key = TestItemKey(uuid.uuid1().bytes)
connection.add_pool('TestMX', ['localhost:9160'])
t1 = TestItem({'test':'foo'})
t1.key = TestItemKey(uuid.UUID('3cead15a-a54e-11df-87a2-000c298d2724').bytes)
t2 = TestItem({'test':'bar'})
t2.key = TestItemKey(uuid.UUID('3cebc15a-a54e-11df-87a2-000c298d2724').bytes)
t1.save()
t2.save()
print TestItem().load(t1.key.clone())
print TestItem().load(t2.key.clone())
(所選擇的UUID是的那些造成問題的一例)
下面是該腳本的輸出:
[email protected]:/mnt/hgfs/TestMX# python test.py
TestItem: {'test': 'foo'}
TestItem: {'test': 'foo'}
相反的預期結果:
[email protected]:/mnt/hgfs/TestMX# python test.py
TestItem: {'test': 'foo'}
TestItem: {'test': 'bar'}
注意,腳本通常的偉大工程與其他randomely挑選的UUID,但有時不...
我會補充一點,我嘗試用Pycassa而不是Lazyboy,結果完全相同。 – Pierre 2010-08-11 21:06:34
t1.key和t2.key是一樣的,還是我缺少一些基本的東西? – Schildmeijer 2010-08-11 21:23:45
他們非常接近,但不一樣。 '第一個'3cead',第二個'3cebc ...'。 – Pierre 2010-08-11 21:41:16