さまざまなソースから 1 日あたり約 9 GB の生のテキスト データを取得している Web サービスがあります。この大部分は、非常に頻繁に繰り返される比較的短い (100 ~ 300) 文字列です。数千の一意の文字列しかない場合があります
私は通常、事前に最適化したくありませんが、ストレージの問題は開発のすぐ後に問題になるでしょう。
JPA エンティティがあり、この投稿のために単純化します。これは、親テーブルにマップされる文字列/ID のペアです。
@Entity
public class DeduplicatedString implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String value;
public DeduplicatedString() {
super();
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
新しい文字列を追加するときに既存のデータをチェックし、完全に一致するものが既に見つかっている場合は既存のレコードを返すように JPA リスナー (beforeInsert?) をセットアップしたいと思います。
私は通常、挿入トリガーを設定するだけで、JPAでこれを行う方法がよくわかりません。
ありがとう!