Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL प्रदर्शन लंबे स्ट्रिंग्स की खोज कर रहा है

एक स्टोर (कैश, या डेटाबेस) के भीतर देखने के लिए टोकन बनाने के लिए लंबे तारों को हैश करने का आपका विचार एक अच्छा है। मैंने इसे बहुत बड़े स्ट्रिंग्स के लिए, और उच्च मात्रा वाले वातावरण में देखा है, और यह बहुत अच्छा काम करता है।

"इस एप्लिकेशन के लिए आप किस हैश का उपयोग करेंगे?"

  • मुझे नहीं लगता कि एन्क्रिप्शन (हैशिंग) एल्गोरिदम वास्तव में मायने रखता है, क्योंकि आप डेटा को एन्क्रिप्ट करने के लिए हैशिंग नहीं कर रहे हैं, आप एक टोकन बनाने के लिए हैशिंग कर रहे हैं जिस पर लंबे मूल्यों को देखने के लिए एक कुंजी के रूप में उपयोग किया जा सकता है। इसलिए हैशिंग एल्गोरिथम का चुनाव गति के आधार पर होना चाहिए।

"क्या आप कोड में हैश की गणना करेंगे या डीबी को इसे संभालने देंगे?"

  • अगर यह मेरा प्रोजेक्ट होता, तो मैं ऐप लेयर पर हैशिंग करता और फिर इसे स्टोर (कैश, फिर डेटाबेस) के भीतर देखने के लिए पास करता।

"क्या डेटाबेस में लंबी स्ट्रिंग को संग्रहीत/खोजने के लिए कोई मौलिक रूप से भिन्न दृष्टिकोण है?"

  • जैसा कि मैंने उल्लेख किया है, मुझे लगता है कि आपके विशिष्ट उद्देश्य के लिए, आपका प्रस्तावित समाधान एक अच्छा है।

तालिका अनुशंसाएं (केवल प्रदर्शनकारी):

user

  • आईडी int(11) अहस्ताक्षरित अशक्त नहीं है
  • name_first varchar(100) रिक्त नहीं

user_agent_history

  • user_id int(11) अहस्ताक्षरित अशक्त नहीं है
  • agent_hash वर्कर (255) शून्य नहीं है

agent

  • agent_hash वर्कर (255) शून्य नहीं है
  • browser वर्कर (100) शून्य नहीं है
  • agent टेक्स्ट शून्य नहीं है

स्कीमा पर कुछ नोट्स:

  • आपके ओपी से ऐसा लगता है कि आपको उपयोगकर्ता और एजेंट के बीच एम:एम संबंध की आवश्यकता है, इस तथ्य के कारण कि उपयोगकर्ता काम से फ़ायरफ़ॉक्स का उपयोग कर रहा है, लेकिन फिर घर पर आईई 9 पर स्विच कर सकता है। इसलिए पिवट टेबल की जरूरत है।

  • varchar(255) agent_hash . के लिए उपयोग किया जाता है बहस के लिए है। MySQL सुझाव हैश स्टोर करने के लिए एक varbinary कॉलम प्रकार का उपयोग करना, जिनमें से कई प्रकार हैं।

  • मैं यह भी सुझाव दूंगा कि या तो agent_hash . बनाएं प्राथमिक कुंजी, या कम से कम, कॉलम में एक अद्वितीय बाधा जोड़ना।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql को cmake में शामिल करें

  2. लारवेल माइग्रेशन - अखंडता बाधा उल्लंघन:1452 चाइल्ड पंक्ति को जोड़ या अपडेट नहीं कर सकता:एक विदेशी कुंजी बाधा विफल हो जाती है

  3. जेट्टी 7 + MySQL कॉन्फिग [java.lang.ClassNotFoundException:org.mortbay.jetty.webapp.WebAppContext]

  4. django फॉर्म ड्रॉपडाउन चयन में अतिरिक्त डेटा प्राप्त करें

  5. लोड डेटा INFILE के साथ mysql डुप्लिकेट