مشاركة عبر


قيود المفتاح الفريدة في Azure Cosmos DB

ينطبق على: NoSQL

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

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

على سبيل المثال، ضع في اعتبارك حاوية Azure Cosmos DB مع Email address كقيد مفتاح فريد وكمفتاح CompanyID القسم. عند تكوين عنوان البريد الإلكتروني للمستخدم باستخدام مفتاح فريد، يكون لكل عنصر عنوان بريد إلكتروني فريد داخل معين CompanyID. لا يمكن إنشاء عنصرين باستخدام عناوين بريد إلكتروني مكررة وبنفس قيمة مفتاح القسم. في واجهة برمجة تطبيقات Azure Cosmos DB ل NoSQL، يتم تخزين العناصر كقيم JSON. قيم JSON هذه حساسة لحالة الأحرف. عندما تختار خاصية كمفتاح فريد، يمكنك إدراج قيم حساسة لحالة الأحرف لتلك الخاصية. على سبيل المثال، إذا كان لديك مفتاح فريد محدد في خاصية الاسم، فإن "Gaby" يختلف عن "gaby" ويمكنك إدراج كليهما في الحاوية.

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

على سبيل المثال، يمكن أن تحتوي الحاوية على عناصر بالقيم التالية، حيث يكرم كل عنصر قيد المفتاح الفريد.

هوية الشركة الاسم الأول اسم العائلة عنوان البريد الإلكتروني
Contoso Gaby Duperre gaby@contoso.com
Contoso Gaby Duperre gaby@fabrikam.com
Fabrikam Gaby Duperre gaby@fabrikam.com
Fabrikam Ivan Duperre gaby@fabrikam.com
Fabrkam Duperre gaby@fabraikam.com
Fabrkam gaby@fabraikam.com

إذا حاولت إدراج عنصر آخر مع المجموعات المدرجة في الجدول السابق، تتلقى خطأ. يشير الخطأ إلى أنه لم يتم استيفاء قيد المفتاح الفريد. تتلقى إما Resource with specified ID or name already exists أو Resource with specified ID, name, or unique index already exists كرسالة إرجاع.

حدد مفتاحاً فريداً

يمكنك تعريف مفاتيح فريدة فقط عند إنشاء حاوية Azure Cosmos DB. يتم تحديد نطاق مفتاح فريد إلى قسم منطقي. في المثال السابق، إذا قسمت الحاوية بناءً على التعليمة البرمجية الخاصة بالرمز البريدي، فسينتهي بك الأمر بعناصر مكررة في كل قسم منطقي. ضع في الاعتبار الخصائص التالية عند إنشاء مفاتيح فريدة:

  • لا يمكنك تحديث حاوية موجودة لاستخدام مفتاح فريد مختلف. بمعنى آخر، بعد إنشاء حاوية بسياسة مفاتيح فريدة، لا يمكن تغيير السياسة.

  • لتعيين مفتاح فريد لحاوية موجودة، قم بإنشاء حاوية جديدة بقيد المفتاح الفريد. استخدم أداة ترحيل البيانات المناسبة لنقل البيانات من الحاوية الحالية إلى الحاوية الجديدة. بالنسبة لحاويات SQL، استخدم مهام نسخ الحاوية لنقل البيانات. بالنسبة لحاويات MongoDB، استخدم mongoimport.exe أو mongorestore.exe لنقل البيانات.

  • يمكن أن يكون لسياسة المفاتيح الفريدة 16 قيمة مسار كحد أقصى. على سبيل المثال، يمكن أن تكون /firstNameالقيم و /lastNameو./address/zipCode يمكن أن تحتوي كل سياسة مفتاح فريدة على 10 قيود أو مجموعات مفاتيح فريدة كحد أقصى. في المثال السابق، يمثل الاسم الأول واسم العائلة وعنوان البريد الإلكتروني معاً قيداً واحداً. يستخدم هذا القيد 3 من أصل 16 مساراً ممكناً.

  • عندما تحتوي الحاوية على نهج مفتاح فريد، تكون رسوم وحدة الطلب (RU) لإنشاء عنصر وتحديثه وحذفه أعلى قليلا.

  • المفاتيح الفريدة المتفرقة غير مدعومة. إذا كانت بعض قيم المسار الفريدة مفقودة، فسيتم التعامل معها كقيم خالية، والتي تشارك في قيد التفرد. لهذا السبب، يمكن أن يكون هناك عنصر واحد فقط بقيمة فارغة لتلبية هذا القيد.

  • أسماء المفاتيح الفريدة حساسة لحالة الأحرف. على سبيل المثال، ضع في اعتبارك حاوية مع تعيين قيد المفتاح الفريد إلى /address/zipcode. إذا كانت بياناتك تحتوي على حقل يسمى ZipCode، فإن Azure Cosmos DB يدرج "خال" كمفتاح فريد لأن zipcode ليس هو نفسه ZipCode. نظراً لحساسية حالة الأحرف هذه، لا يمكن إدراج جميع السجلات الأخرى التي تحتوي على الرمز البريدي نظراً لأن "القيمة الفارغة" المكررة تنتهك قيد المفتاح الفريد.

الخطوات التالية