2011-04-28 1 views
4

단어 'FOOBAR'를 포함 된 모든 게시물을 얻을 수 카산드라에서 같은 쿼리를 만드는 방법 카산드라에서 같은 쿼리를 만드는 방법은 무엇입니까? 내 키 스페이스에서

posts = [ 
    #key 
    'post1': { 
     # columns and value 
     'url': 'foobar.com/post1', 
     'body': 'Currently has client support FOOBAR for the following programming languages..', 
    }, 
    'post2': { 
     'url': 'foobar.com/post2', 
     'body': 'The table with the following table FOOBAR structure...', 
    }, 
    # ... , 
} 

? SQL에서는 SELECT * FROM POST WHERE BODY LIKE '%FOOBAR%'이지만 Cassandra에서는?

+0

LIKE는 아직 Cassandra에서 지원되지 않습니다. – bitcycle

답변

0

키가 도메인 인 다른 열 패밀리를 생성 할 수 있으며 값은 원래 열 패밀리의 키입니다. 그렇게하면 특정 도메인 내의 레코드를 직접 참조 할 수 있습니다.

+0

글쎄, 다른 컬럼을 만드는 것은 매우 복잡하다. 나는 카산드라가이 문제를 개선 할 필요가 있다고 생각합니다. MongoDB에서는 매우 쉽습니다. – Bruce

5

이 작업을 효율적으로 수행하는 유일한 방법은 https://github.com/tjake/Solandra (Solr-on-cassandra) 같은 전체 텍스트 검색 엔진을 사용하는 것입니다. 물론 수동으로 같은 기술을 사용하여 자신 만의 롤을 만들 수는 있지만 일반적으로이 방법은 필요하지 않습니다.

SQL 데이터베이스의 경우에도 마찬가지입니다. postgresql의 tsearch2와 같은 FTS 확장을 사용하지 않는 한 % FOO %를 테이블 스캔으로 변환합니다.

+0

카산드라 클러스터가 충분히 큰 경우 각 노드가 데이터의 일부만 스캔하면되기 때문에 테이블 스캔을 비교적 빨리 수행 할 수 있습니다. 그래도이 일을 네이티브 방식으로 수행 할 수 있을지 확신 할 수 없습니다. – minimalis

0

Cassandra 3.4에서는 CSQL에서 LIKE에 대한 지원이 추가되었습니다. 결국에는 기본적으로 사용할 수 있습니다.