database count - Cassandra의 열 패밀리의 행 수




row number (6)

Cassandra의 단일 열 패밀리의 행 수 (키 수)를 얻는 방법이 있습니까? get_count는 열 개수를 가져 오는 데만 사용할 수 있습니다.

예를 들어, 사용자가 포함 된 열 패밀리가 있고 사용자 수를 얻고 싶다면. 내가 어떻게 할 수 있니? 각 사용자는 자신의 행입니다.


Answers

나는 데이터를 PHP에서 해시로 변환 한 후 이처럼 카운트를 얻고있다.


항상 map / reduce가 있지만 아마 말할 필요도 없습니다. 하이브 또는 돼지를 가지고 있다면, tasktrackers가 카산드라 지역에 대해 알고 있는지 잘 모르겠지만 클러스터 전반의 모든 테이블에서이 작업을 수행 할 수 있으므로 네트워크 전체에서 테이블 전체를 스트리밍해야 할 수 있으므로 cassandra에서 작업 추적기를 얻을 수 있습니다. 노드에서 수신 한 데이터는 다른 카산드라 노드에서 가져온 것일 수 있습니다. (그러나 내가 아는 사람이 있는지 알고 싶습니다.

참고 : 우리는 나중에 색인을 원한다면 cassandra에 map / reduce를 할 수 있기 때문에 주로 cassandra에 map / reduce를 설정하고 있습니다.


대용량 데이터 세트로 작업하고 있고 근사치가 괜찮은 경우 다음 명령을 사용하는 것이 좋습니다.

nodetool --host <hostname> cfstats

그러면 다음과 같이 각 열 패밀리의 목록이 덤프됩니다.

Column Family: widgets
SSTable count: 11
Space used (live): 4295810363
Space used (total): 4295810363
Number of Keys (estimate): 9709824
Memtable Columns Count: 99008
Memtable Data Size: 150297312
Memtable Switch Count: 434
Read Count: 9716802
Read Latency: 0.036 ms.
Write Count: 9716806
Write Latency: 0.024 ms.
Pending Tasks: 0
Bloom Filter False Postives: 10428
Bloom Filter False Ratio: 1.00000
Bloom Filter Space Used: 18216448
Compacted row minimum size: 771
Compacted row maximum size: 263210
Compacted row mean size: 1634

"Number of Keys (estimate)"행은 클러스터에서 좋은 추측이며 명시 적 개수 접근 방식보다 성능이 훨씬 빠릅니다.


나는 이것에 우수한 기사를 여기에서 찾아 냈다. http://www.planetcassandra.org/blog/post/counting-keys-in-cassandra

cf limit 1000000에서 count (*)를 선택하십시오.

우리가 알고있는 대략적인 상한이 있다면 위의 명령문을 사용할 수 있습니다. 나는이 사건이 내게 유용하다는 것을 알았다.


[편집 :이 대답은 카산드라 0.8.1에서 구식입니다. 카산드라의 카운터 열을 올바르게 처리하는 방법에 대해서는 카산드라 위키의 카운터 항목 을 참조하십시오.]

나는 Cassandra를 처음 사용하지만 Google의 App Engine을 많이 사용합니다. 다른 해결책이 제시되지 않으면 memcached와 같은 원자 적 증가 연산을 지원하는 플랫폼에 별도의 카운터를 유지하는 것을 고려할 수 있습니다. 나는 카산드라가 원자 카운터 증가 / 감소 기능을 위해 노력하고 있다는 것을 알고 있지만, 아직 황금 시간대에는 준비가되어 있지 않습니다.

새로운 기능이기 때문에 하이퍼 링크를 하나만 게시 할 수 있습니다. 카운터 지원에 대한 내용은 아래의 내 의견 링크를 참조하십시오.

이 스레드는 가능한 해결책으로 ZooKeeper, memcached 및 redis를 제안합니다. 내 개인적인 취향은 memcached 것입니다.

http://www.mail-archive.com/[email protected]/msg03965.html


출처 : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

Object.defineProperty (obj, prop, descriptor)

모든 개체에 추가 할 수 있습니다.

Object.defineProperty(Object.prototype, "length", {
    enumerable: false,
    get: function() {
        return Object.keys(this).length;
    }
});

또는 단일 객체 :

var myObj = {};
Object.defineProperty(myObj, "length", {
    enumerable: false,
    get: function() {
        return Object.keys(this).length;
    }
});

예:

var myObj = {};
myObj.name  = "John Doe";
myObj.email = "[email protected]";
myObj.length; //output: 2

그런 식으로 for..in 루프에 표시되지 않습니다.

for(var i in myObj) {
     console.log(i + ":" + myObj[i]);
}

산출:

name:John Doe
email:[email protected]

참고 : <IE9 브라우저에서는 작동하지 않습니다.





database count cassandra rowcount