問題タブ [tokyo-cabinet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nosql - 京都キャビネットと複数のプロセス?
ドキュメントを読みましたが、単一のkyotocabinetデータベースにアクセスする複数のプロセス(リーダーとライター)についてはほとんどわかりませんでした。複数のリーダーを作成できるようですが、ONOLOCKを指定しない限り、複数のライターがデータベースを開こうとするのをブロックします。誰かがこれがどのように機能するか、またはそれが可能かどうかについて何か光を当てることができますか?私はKyotoTycoonが1つの選択肢であることを理解していますが、KyotoCabinetについて特に興味があります。
c - Tokyocabinet: BTree ファイルをトラバースするループ
カーソルで BTree をトラバースします (ドキュメントの例)
以下のコードを参照してください。
で 562 418 レコードを取得しました が、150 000 000 以上のtcbdbrnum()
ループがcounter
あります... サイクル終了はありませんでした。
問題は何ですか?
ループサイズは 150652 サイクルであり、ループ オフセットはほぼ 1.3 * 150652 であることがわかりました。したがって、ファイルを 1 042 638 キーに増やし、ループサイズ = 280299 とします。recsize / loopsize の比率 = 3,73...
何をすべきか、それはアンループを持っていますか? ループが発生するのはなぜですか?
すべてのキーはサイズが 64 ビット (8 バイト) のランダムです。一部のキーを削除できました。
perl - TokyoCabinet 書き込み速度が遅すぎる
26個のTCHファイルに書き込むperlスクリプト(Ubuntu 12.04 LTS)があります。キーはほぼ均等に分散されます。書き込みは 300 万回の挿入後に非常に遅くなり (すべてのファイルに均等に分散されます)、速度は最初の 240,000 回の挿入/分から 3 MM の挿入後には 14,000 回の挿入/分に低下します。個々のシャード ファイルは 150 MB 以下で、全体のサイズは約 2.7 GB になります。
bnumを 4*num_records_then に設定し、オプションをTLARGEに設定して、そのファイルに100K 挿入するたびに、すべての TCH ファイルで最適化を実行し、xmsizが bnum のサイズと一致することを確認します (なぜ tokyo tyrant は bnum を調整した後でも指数関数的に減速するのですか? で述べたように)。 )
この後も、挿入は高速で開始され、240k 挿入/分から 14k 挿入/分までゆっくりと減少します。1 つのスクリプトで複数の tch 接続 (26) を保持していることが原因でしょうか? または、構成設定はありますか?
c - 東京内閣は、*sp = rec->vsiz で tcbdb.h にセグメンテーション違反を与えます。
永続ストレージ データベースの作成に Tokyo Cabinet を使用しています。
私が使用しvoid *tcbdbget(TCBDB *bdb, const void *kbuf, int ksiz, int *sp);
ている tcbdb.h ファイルで segfault が発生します*sp = rec->vsiz;
。
Tokyo Cabinetにバグがありますか、それとも何か不足していますか?
レコードの挿入は正常に機能するため、すべての void ポインターが完全に挿入されているため、ルックアップだけで問題が発生します。挿入機能はこれbool tcbdbput(TCBDB *bdb, const void *kbuf, int ksiz, const void *vbuf, int vsiz);
です。
c - Cのtokyo Cabinetを使用した値によるカスタムソート
東京キャビネットを使用してbtreeを実装していますが、値をソートしたままにすることが可能かどうかを知りたいです。tcbdbsetcmpfunc
を使用してキーのカスタム比較関数を設定できることはわかっていますが、値についてはわかりませんか?
ほとんどの場合、値がソートされていると仮定して最初の 1000 レコードしか必要ないため、これを尋ねます。そうしないと、何百万ものレコードをループしてソートし、最初の 1000 件を取得する必要があり、遅くなる可能性があります。
例えば:
hashtable - 東京内閣のハッシュテーブルが65GBに達すると壊れる
PyTyrant モジュールを介して Tokyo Cabinet データベースを使用し、データをハッシュ テーブル (*.tch ファイル) に保存しています。ファイルのサイズが 65 GB に達すると、次のバグが発生します。新しいエントリがデータベースに追加されたときに、新しいキーをクエリすると「no such key error」が返されます。ただし、すべてのキーのリストを照会すると、新しいキーがリストされます。さらに、問題のあるエントリをテーブルから削除することはできません。
誰でもこれを説明できますか?
編集: エラーの直前の「tcrmgr inform -st -port 1978 localhost」の出力:
別のレコードを追加すると、エラーが表示されます。