أفضل نوع بيانات (الأكثر كفاءة) لاستخدامه ل Uuids كمعرفات JPA

StackOverflow https://stackoverflow.com/questions/730788

سؤال

أريد استخدام Uuids كمعرفات لكائنات JPA الخاصة بي.

أنا فقط أستخدم سلسلة لتخزين UUID. ماذا سيكون أكثر كفاءة؟

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

المحلول

كيف تقيس الكفاءة؟

على سبيل المثال، تخزين UUID (وهو ترميز نص byte[]) كضع long ستتيح لك القيم مقارنةها بسرعة كبيرة على بنية 64 بت (بسرعة أكبر من String المقارنة، وهي حرف حسب الشخصية). ومع ذلك، ستعاني كفاءة الترميز الخاصة بك، لأن عليك كتابة نوع مخصص.

ما هو مهم في قضيتك؟


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

Uuids مصممة بشكل جيد في هذا الصدد. أفضل Uuid هو أسلوب "عشوائي". ليس لديهم الكثير من الأساليب المشتركة في أي مكان، بما في ذلك البداية، ولا تسرب المعلومات حول الجهاز الذي ولدتهم. ولكن، فإن أسلوب "الطابع الزمني" ل Uuids يجعل مفتاح جيد أيضا، نظرا لأن البتات المنخفضة للترتيب (تختلف بسرعة) هي أولا في السلسلة، في حين تأتي البتات العالية (التي لا تتغير ل UUIDs المتتالية) في وقت لاحق.

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