1

これが私の状況です:

データストアに存在するさまざまな「もの」へのリンクを含むMVCWebサイトがあります。多くのWebサイトと同様に、これらのURLを短く説明したいのですが、たとえばwww.mysite.com/12/description-of-thing、URLの「12」はデータストア内のデータのキーを表します。

私は現在、RDBMSではなくnoSQLソリューションを使用しているため、データの短い整数キーの代わりに、データのクラスター化されたインデックスとして機能する、これらの長くて工夫された固定長のキーを使用しています。私のプロジェクトでのそのようなもののURLは次のようになりますwww.mysite.com/000_sub_2520552274112731878_497d19e/description-of-thing。明らかに、これは良い短いURLではありません。

私が探しているのは、「000_sub_2520552274112731878_497d19e」のようなものから、はるかに短く、URLに適した文字列へのある種の双方向変換を行うことです。

このようなことは可能ですか?すでに解決策はありますか?

4

1 に答える 1

2

特に「000_sub_2520552274112731878_497d19e」の構造が一貫していることがわかっている場合は、テーブル ルックアップを使用せずに情報を短い文字列に圧縮できます。「もっと短い」というあなたの基準が何であるかはわかりません。

たとえば、ddd _sub_dddddddddddddddddd _hhhhhhh (d は 10 進数、h は 16 進数) になることがわかっている場合、最初の ddd を 10 ビットで、2 番目の d のセットを 64 ビットで、最後のセットをh は 28 ビットです。_sub_または_は常にそこにあることがわかっているので、コーディングしません。合計 102 ビットがあり、base 64 で 17 文字 (元の長さの半分未満)、または base 85 で 16 文字でコーディングできます。確認していませんが、85 個の URL セーフのセットがあるはずです。文字。

そのキーの構造がわからない場合、圧縮の量はかなり少なくなりますが、それでもある程度は取得できます。

于 2012-09-09T17:56:55.773 に答える