मैं पहली बार के बारे में हिस्सा जवाब देंगे मैं इसे कैसे कर रहा हूँ मैं एक MongoDB उपयोग कर रहा हूँ:। मैं विचारों आप का उल्लेख के साथ toyed, लेकिन जल्दी ही कारण के साथ में स्मृति समाधान (Memcached, Redis) बाहर पार कर गया। मेरे अंतिम समाधान या तो एक संबंधपरक DB या MongoDB की तरह एक NoSQL करने के लिए नीचे आया था। ईमानदारी से कहूं तो अपने प्रोजेक्ट के पैमाने पर, मैं मजबूती के साथ डीबी प्रकार के बीच प्रदर्शन की तुलना के बारे में नहीं सोचा था।
मेरी विशेष सुविधा के साथ "रोडमैप," मैं एक अधिक "OOP" शैली दृष्टिकोण जब स्पष्ट रूप से एक उपयोगकर्ता वर्ग, धन्यवाद मोंगो की सामान्यीकृत संरचना करने के लिए परिभाषित करने के लिए बिना उपयोगकर्ता "वस्तु" के साथ काम कर मोंगो साथ जाने का फैसला किया। मैं एक ही MySQL के लिए किया जा सकता है समझ में, भी, सिर्फ इतना है कि प्रसंस्करण jsonडेटा अधिक "वस्तु की तरह" मेरे लिए है और flask, यानी user = getUserFromMongo, जो मुझे अजगर में एक dict तो मैं सिर्फ कर सकते हैं देता है user['first_name']। कोड belows के इस सादगी समझा जाएगा:
(किसी भी तरह इस महसूस की तरह ... एसक्यूएल रेल में सरल डेटाबेस बातचीत के लिए आदेश लिखने के लिए होने नहीं था)
MongoDB पर मेरे उपयोगकर्ता ऑब्जेक्ट डेटा

अंत में, के रूप में कैसे मैं उपयोगकर्ता इनपुट का प्रबंधन , मैं की Wit.ai की अवधारणा को अपनाया context। मैं कैसे वे यह वास्तव में पता नहीं है, लेकिन एक contextमेरे लिए बातचीत उद्देश्य के प्रकार है कि चल रहा है है। मैं इसे एक ढेर की तरह उपयोग करते हैं, और जैसे ही वर्तमान संदर्भ में किया जाता है, इसे बंद उपयोगकर्ता के संदर्भ डेटा पॉप। हर संदेश बॉट प्राप्त करता है के लिए, कार्यक्रम वर्तमान संदर्भ मिलता है और प्रवाह निर्देशित करेंगे। जब भी एक अज्ञात त्रुटि उत्पन्न होती है (से निपटने अपवाद), सबसे अधिक संभावना उपयोगकर्ता कुछ बॉट नहीं समझती कह रहा है क्योंकि, मैं स्पष्ट contextडेटा भी।
MongoDB के बारे में अच्छा हिस्सा मैं आकार दे सकते हैं वह यह है कि contextहालांकि मैं चाहता हूँ और सिर्फ एक वस्तु के रूप में यह व्यवहार करते हैं। एक साधारण से एक की तरह है {name: yelp-search, stage:ask-for-user-location}, और मुझे लगता है जटिल भी है कि संरचना पर बनाया जा सकता है। बेशक, के ढेर कार्यान्वयन contextजटिल अतीत संदर्भ में जटिल बातचीत के साथ सौदा नहीं करता है।
मैं Github पर अपने प्रोजेक्ट डाल अगर आप इसे पर एक नज़र लेना चाहते हैं।