問題タブ [timeuuid]

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.

0 投票する
3 に答える
1035 参照

scala - cassandra タイムスタンプ列を timeuuid としてキャストする

からイベントを取得しKafkaて保存してCassandraいます。次のようなテーブルの列を作成するためのjsonフィールドを含む解析:eventID, sessionID, timestamp, userIDCassandra

そしてコードで:

timestampとして列を追加する必要がありますtimeuuid。から解析しているのでjson、ヘッダーからすべての値を抽出し、この方法で列を作成しました。

この部分:

エラーが発生しています

java.lang.NumberFormatException: 入力文字列の場合: "2019-05-09T09:00:52.553+0000" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

試してみました: java.util.UUID.fromString(x._1("timestamp").toString、同じエラーも生成します。適切にキャスト/変換timestampし、 spark ジョブ経由timeuuidで挿入する方法Cassandra

0 投票する
1 に答える
288 参照

scylla - scyllaから選択するときに単調に増加するtimeuuidを保証する方法

クラスタリング キーとして timeuuid を持つテーブルがあります。

次の保証を使用して、このクラスタリング キーの順序でデータを選択したいと考えています。何かを選択した場合、将来、それらのレコードの前に挿入が行われることはありません (したがって、レコードをスキップするリスクなしに、何が起こったのかを確認することを繰り返すことができます)。イベント)

SELECT kind FROM event WHERE domain = ? AND createdAt > lastCreatedAtWeAreAwareOf

クライアントでtimeuuidを生成し、scyllaに並列挿入を使用すると、技術的には、最近のtimeuuidがいくつかの古いものよりも前に挿入される可能性があり(ネットワークの問題などにより)、選択したレコードを見逃す可能性があります。

これを解決するにはどのような方法がありますか?

関数を使用してみましたが、機能しているように見えますが (同じパーティション キー内で単調に増加)、多くの重複(currentTimeUUID同じパーティション キーごとに 20 ~ 40 の重複) が作成されます。currentTimeUUID重複を避ける方法が本当に必要です。選択プロセスが複雑になり、不要なリソースが消費されます)

currentTimeUUIDまた、関数を使用するときに逆方向のクロックジャンプの脅威があるかどうかも興味がありますか?