私の仕事では、多くのユーザーがおり、各ユーザーにはホームディレクトリのファイルセットがあります。あらかじめ定義されたルールのため、私は各ファイルにユーザーファイルの内容と作成時間に基づいてUID(一意のID)を与えました。しかし今、私は、ユーザーアカウントのファイル数が100万を超えることができないことを知りました。現在のUIDは約32文字です。現在のuidlがNoSQLデータベースで多くのスペースを使用しているため、UIDを約6(理想条件)の文字から約10-12文字の長さに減らすことができます。生成/圧縮ユニークキー
現在のUIDLは私が問題を言い換えるてみましょう timestamp.prrocess_whichcreated_it.size
EDIT のように見えます。私が実際に必要とするのは、圧縮アルゴリズムです。
私は1,000,000文字列(各ユニーク)と32文字の長さのリストを持っています。私は、F(string)= s2のような圧縮関数fを必要とします。ここで、S2は長さが10文字であり、すべてのS2文字列は一意にマップされます。
UIDを探しているたびに実行されるハッシュ関数、またはこれらのUIDを小さな新しい範囲に変更する方法を探していますか? – amit
@amit:以前のUIDを圧縮したいだけですが、自分の仕事に現在のUIDを使うことができれば良いでしょうが、新しいものを計算できるのであれば良いでしょう。理想的にはH(C.UIDL)= newuidl –
それでは、並べ替えや置き換えをしないのはなぜですか?すべてのUIDをソートし、古いUIDを、ソートされたリスト内の古いUIDのインデックスを示す新しいUIDに置き換えます。ユニークで最適なものになるでしょう。または、あなたが本当に意味することが分からないのですか? :| – amit