sql >> データベース >  >> NoSQL >> MongoDB

RESTfulURLでObjectIdを使用する必要がある/使用すべきでない理由はありますか?

    ObjectIdを使用した ■RESTfulAPIの場合、最大の欠点は、クリーンなURLを使用するという点で非常にノイズが多いことです。 HEX番号のままにするか、非常に大きな整数に変換して、どちらもやや不親切なURLにします:

    /rest/resource/52435dbecb970072ec3a780f
    /rest/resource/25459211534898951476729247759
    

    URLに「タイトル」を追加して(StackOverflowのように)、少しわかりやすくしました:

        /rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName
    

    もちろん、「タイトル」はソフトウェアでは無視されますが、ユーザーにはそれが表示され、クレイジーなIDセグメントを精神的に無視できます。

    インフラストラクチャを公開することでインフラストラクチャから学ぶことができる有用なものはほとんどありません:

    1. タイムスタンプ
    2. マシンID
    3. プロセスID
    4. ランダムな増分値

    潜在的にマシンIDを収集する以外(通常、ObjectIdを作成するクライアントの数を示します s)、そこにはあまりありません。

    ObjectId はランダムではないため、セキュリティのために使用することはできません。常にデータを保護する必要があります。それらは明白な方法で増加しないかもしれませんが、力ずくで他のリソースを見つけるのは簡単でしょう。ただし、以前に自動インクリメントIDを使用していた場合、これは新しい問題ではありません。

    常に多くの新しいドキュメントを作成していないことがわかっている場合は、ここのパターンの1つを使用して、より単純なIDを作成することをお勧めします。私が書いたあるアプリでは、URLに表示されるドキュメントIDの一部にauto-inc手法を使用し、AjaxのみのドキュメントIDにはObjectIdを使用しました。 s。いくつかのURLを簡単に「入力」できるようにしたかったのです。 ObjectIdの形式はありません エンドユーザーが簡単に入力できます。これは、MongoDBの長所の1つであり、任意の_idを使用できます。 あなたが望むフォーマット。 :)



    1. ClusterControlでサポートされている最も人気のあるNoSQLデータベース

    2. ZADDやHMGETなどのredisコマンドが処理できる引数の数に制限はありますか?

    3. StackExchange.Redisとの並列実行?

    4. デフォルトでMongoDBシェルできれいに印刷