سؤال

أنا أعمل على قطعة صغيرة ستولد مفتاح API باستخدام SQL Sever's NewID (). سيتم استخدام المفتاح للوصول إلى أجزاء معينة من تطبيق الويب الخاص بنا وسيتم تمريرها من خلال عنوان URL. يتم إنشاء المفتاح عند إنشاء مستهلك API جديد (في Proc مخزنة). المفتاح فريد لكل مستهلك. في حين من المتوقع أن يكون العدد الأولي للمستهلكين منخفضًا نسبيًا ، إلا أنه سينمو بمرور الوقت ولكن مع تردد منخفض نسبيًا.

بعض القيود هي:

  • يجب إنشاء المفتاح على مستوى إدراج
  • يجب أن تكون فريدة لكل مستهلك
  • الأداء ، كما هو الحال دائمًا ، مهم


هل هناك أي مشاكل مع هذا النهج - الأمن أو الأداء أو غيرها؟ هل هناك طريقة أفضل لتحقيق نفس النتيجة؟

هل كانت مفيدة؟

المحلول

لا ينبغي أن تكون هناك مشاكل مع هذا. NEWID() يولد GUID والذي يضمن أن يكون فريدًا على نظامك.

يجب ألا تستخدم newSequentialId () لأنه يمكن تخمينه بسهولة ، كما لوحظ هنا, ، ولكن لم يتم تقديم أي تحذير في توثيق NewID () لذلك أفترض أنه ليس لديه نفس المشكلة. هذا يعني أنه لا ينبغي أن تكون هناك مشكلة أمنية.

بالنسبة للأداء ، قد يستغرق الجيل الأولي للمفتاح وقتًا أطول من بعض الطرق الأخرى ، لكن التفرد المضمون يعوضه. يجب أن تكون عمليات البحث سريعة أيضًا إذا قمت بفهرسة العمود.

نصائح أخرى

لقد فعلت هذا دون أي مشاكل. INSERT هي عملية مكلفة نسبيا ، النفقات العامة NEWID() هو تافهة نسبيا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top