3

スタンドアロンのCouchAppとしてURL短縮サービスを書きたいのですが、それが可能かどうか疑問に思っています。明らかに、URL短縮サービスのコア要件は、短くて一意のキーを持つことです。

私が欲しいのは、長いURLをCouchDBにPOSTして、短縮URLを取得することです。更新ハンドラーを使用することを考えましたが、キーが一意であるかどうかを確認するためにDBにクエリを実行する必要があり、それは不可能のようです。

CouchDBを使用して短くて一意のキーを生成する方法はありますか?または、CouchDBの周りに薄いラッパーが必要ですか?

4

1 に答える 1

2

次の構造のドキュメントに基づいて、薄いラッパーを選択します。

{ _id : short_url , url : long_url }

新しい長いURLの挿入は、単一のステップで実行できます。ラッパーに新しいURLを生成させ_id、PUTを試行し、_id成功するまでnewで再試行します。これにより、すべての短縮URLが1回だけ使用されることが保証されます。

この「生成、試行、再試行」アプローチは、一意性を保証する唯一の戦略であり、ラッパーなしでは利用できません。

同じ長いURLで同じ短いURLを再利用したい場合は、そのビューを追加して、URLが存在する場合はそれecho(doc.url,null)を取得することもできます。_idこれは、複数のクライアントがまったく同時に同じ長いURLを追加しようとしない限り、その長いURLに使用される短いURLは1つだけであることを意味します。

于 2010-12-07T13:21:36.117 に答える