سؤال

يستخدم SQLite شيئا يسمىه المؤلفون "طباعة البيان"، أي أساسا يعني أساسا أن SQLite مكتوبة ديناميكيا: يمكنك تخزين قيمة varchar في عمود" int "إذا كنت تريد ذلك.

هذا قرار تصميم مثير للاهتمام، ولكن كلما استخدمت SQLite، استخدمتها مثل RDMS قياسي وتعامل الأنواع كما لو كانت ثابتة. في الواقع، لم أكن رغبا أبدا في الأعمدة المكتوبة بشكل حيوي عند تصميم قواعد البيانات في أنظمة أخرى.

لذلك، متى تكون هذه ميزة مفيدة؟ هل وجد أي شخص استخداما جيدا له في الممارسة العملية التي لا يمكن القيام بها بنفس السهولة بسهولة مع أعمدة مكتوبة ثابتة؟

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

المحلول

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

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

يمكنني استخدام SQLite طوال الوقت لمشاريع .NET الخاصة بي كذاكرة تخزين مؤقت عميل لأنه سهل الاستخدام للغاية. الآن إذا لم يتمكنوا من الوصول إليها فقط لاستخدام GUIDs نفس خادم SQL، فسأكون العربة السعيدة.

نصائح أخرى

الكتابة الديناميكي مفيد لتخزين الأشياء مثل إعدادات التكوين. خذ سجل Windows، على سبيل المثال. كل مفتاح يشبه الكثير من وجود جدول SQLite للنموذج:

إنشاء إعدادات الجدول (اسم نص أساسي، قيمة)؛

حيث يمكن أن تكون القيمة فارغة (REG_NONE) أو عدد صحيح (REG_DWORD / REG_QWORD)، النص (REG_SZ)، أو Blob (REG_BINARY).

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

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