سؤال

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

وهذا النوع من تفضيلات سأكون تخزين تتضمن القيم المنطقية لعرض تلميحات محددة، وترتيب مختلف وحات المحتوى على الصفحة، الصفحة التي لعرضه بعد تسجيل الدخول، القيم الافتراضية لحقول النموذج محددة، الخ الكل في كل شيء، أتوقع أنه سيكون هناك 50+ تفضيلات من هذا النوع لكل مستخدم، والبيانات كونها في الغالب القيم المنطقية والصحيحة.

وأنا لست مروحة كبيرة من التسلسل، ولكن أنا قلقة بشأن قابلية لتخزين كل تفضيل كصف الفردية. الأفكار؟

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

المحلول

وإجراء تسلسل فقاعة البيانات هو الطريق للذهاب هنا، ولكن ليس لأسباب تتعلق بالأداء - إلى حد ما لأن هذا هو جانب من جوانب النظام الذي من المرجح أن نرى أعدادا هائلة من التغييرات. كنت لا تريد أن يكون لتغيير مخطط DB الخاص بك فقط لأنك تحتاج الآن للسماح تفضيل لتشغيل الوضع المتقدم على بعض الصفحات أو شيء من هذا.

ونموذج كيان سمة القيمة التي HLGEM يذكر يناسب هذا من وجهة نظر "من السهل أن تتطور"، ولكن كما يقول كان يمكن أن يكون الأداء الضعيف للغاية.

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

نصائح أخرى

ومهما فعلت تجنب استخدام هيكل كيان attrivute القيمة لهذا ( HTTP: //en.wikipedia.org/wiki/Entity-Attribute-Value_model ) إلا إذا كنت تريد نظام سيئة للغاية الأداء. دعوة إلى طاولة واحدة مع 50 الأعمدة ستكون أسرع بكثير من الدعوة الى طاولة واحدة أن لديك للانضمام الى 50 مرات للحصول على كافة المعلومات التي تحتاج إليها.

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

وأنا لا أعرف ما إذا كنت سوف حتى تخزين المعلومات مثل تفضيلات المستخدم في قاعدة بيانات. يبدو أنك تريد أن تبدو في كثير (إن لم يكن كل) تفضيلات المستخدم بمجرد أن يسجل المستخدم في. إذا كنت في نهاية المطاف القيام حفنة من الاستفسارات ديسيبل، والنظام الخاص بك في نهاية المطاف بطيئة جدا. بدلا من ذلك، أود أن أوصي استمرار ALL من إعدادات المستخدم في ملف واحد (أو سجل واحد في مكان ما)، وبلعه حتى الجملة والتخزين المؤقت في أقرب وقت تسجيل دخول المستخدم في.

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

وأود أن، على الرغم من تحميله في فئة وتستمر تلك الفئة عن طريق نوع من آلية التخزين المؤقت.

إذا أنت لا تحتاج إلى البحث على التفضيلات التي يمكن تخزين دائما تفضيلات كما XML وحفظه إلى عمود "الأفضلية". ينبغي أن تجعل مضيفا تفضيلات جديدة في المستقبل أسهل قليلا.)

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

وبطبيعة الحال، مع الكوكيز يأتي كل المحاذير من استخدام الكوكيز. ولكن مجرد فكرة أخرى ...

وهناك بعض تفضيلات المستخدم يفضل أكثر (جميع الحيوانات متساوية ولكن بعضها أكثر مساواة من الآخرين). هذه يجب أن تكون على وجه التحديد الأمثل لاسترجاع والتطبيق على واجهة على تسجيل الدخول. كما عمق تفضيل وتنخفض، ويمكن تجميعها باستخدام أي معايير وحفظ أعمدة منفصلة ويحتمل أن صفائف (على سبيل المثال. ويشمل العمود تفضيل الخط نوع الخط والحجم واللون، ويشير إلى جدول الخط). أيضا مؤشر الأعمدة المستخدمة بكثرة باستخدام الأدوات ديسيبل وإعادة تصميم لتقسيم الأعمدة تجميعها بحيث يمكنك تحديد أي عنصر في تجميع تحت الطلب الكبير.

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

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