2013-06-02 6 views
7

मैं कुछ दिनों के लिए स्काइप डेटाबेस main.db विच्छेदन कर रहा हूं, और यह ऐसा कुछ है जिसे मैंने अभी तक नहीं समझा है। जाहिर है, इस सवाल के लिए स्काइप main.db संरचना बहुत विशेष रूप से किया जाएगा। (त्याग)स्काइप main.db - चैट और वार्तालापों के बीच अंतर

ऐसा लगता है कि सभी आवश्यक जानकारी है कि मैं जरूरत टेबल Conversations, Messages, Participants में हैं।

Message तालिका एक Conversation जो संदेश के अंतर्गत आता है से कनेक्ट करने के वास्तविक लॉग कहा गया है कि, प्राप्तकर्ता (ओं), टाइमस्टैम्प, और convo_id विदेशी कुंजी (हालांकि लागू नहीं) शामिल हैं।

ConversationMessage का समुच्चय और संपर्क है कि। में भाग लेने

Participants तालिका Conversations मेज और Contacts तालिका जो कई-से-अनेक कनेक्टर मेज पर काम करता है धारण करने के लिए मौजूद है।

मुझे Chats और Chatmembers तालिका क्या मिलती है। ChatmembersChats पर काम करता है Participants तालिका Conversations तालिका में काम करती है; संपर्क और बातचीत को जोड़ना- या 'चैट'।

Chats में Conversations के समान है, सिवाय इसके कि Message तालिका में कोई कुल नहीं है। Messages तालिका से Chats तालिका से मैप करना असंभव है, जिस पर संदेश लॉग (Messages तालिका की पंक्ति) संबंधित है।

Chats और Conversations का हिस्सा एक विदेशी कुंजी, Conversations तालिका chat_dbid नाम के एक स्तंभ जो Chats मेज पर मिलती है। लेकिन Conversations तालिका में पंक्तियां हैं जिनमें शून्य chat_dbid फ़ील्ड है, और Chats में सभी पंक्तियों में id फ़ील्ड नहीं है जो chat_dbid फ़ील्ड Chats तालिका में है।

Chats तालिका अभी भी अपडेट किया जा रहा है और मैं से कुछ को पहचान चैट-या conversations- मैं हाल ही में टाइमस्टैम्प और उस में सदस्यों के आधार पर किया है।

क्या किसी को पता है कि Chats तालिका क्या है? या इसके बजाय, Chats तालिका और Conversations तालिका के लिए क्या अंतर और औचित्य है?

जब मैं इसके लिए बेतरतीब ढंग से देखा तो मुझे केवल one like that talked about main.db structure मिल सकता था, और यह बहुत उपयोगी नहीं था।

लिंक Chats

के अनुसार चैट जिसमें उपयोगकर्ता भाग लिया प्रदान करता है।

और Conversations

बातचीत जिसमें उपयोगकर्ता भाग लिया की एक सूची प्रदान करता है।

चैट और वार्तालापों के बारे में उनकी शब्दावली क्या है? वे कैसे अलग हैं?

यह मुझे पागल गाड़ी चला रहा है।

उत्तर

4

कल मैं भी स्काइप में main.db तालिका के माध्यम से जा रहा था। नीचे मेरे निष्कर्ष हैं।

वार्तालाप तालिका विशिष्ट रूप से किसी विशेष संपर्क (या आपके द्वारा बनाए गए समूह संपर्क) के साथ वार्तालाप की पहचान करती है। वार्तालाप में सभी संचार शामिल हैं: चैट संदेश, ध्वनि संदेश, फ़ाइल स्थानान्तरण, कॉल जो आप किसी विशेष संपर्क के साथ करते हैं। अधिकांश तालिकाओं में इस तालिका में प्रवेश के संदर्भ हैं। संदेश तालिका convo__id गया है, चैट मेज, conv_dbid है स्थानांतरण convo_id है और इसी तरह।

संदेश तालिका: संदेशों प्रविष्टि हमेशा चैट नहीं हैं। अगर कोई प्रविष्टि चैट हो तो उसका चैटनाम फ़ील्ड पॉप्युलेट हो जाता है। ऐसा लगता है कि चैट और संदेशों में कई संबंध हैं। चैट कुछ पहचानकर्ताओं द्वारा बनाए गए संदेशों का संग्रह है (संभवतः दिन निश्चित नहीं है।)। "टाइप = 61" सामान्य संदेश प्रतीत होता है: उपयोगकर्ता द्वारा टाइप किया गया संदेश। उदाहरण के लिए अन्य प्रकार ऑटो जनरेट किए गए संदेश प्रतीत होते हैं। msgstr "अगर कॉल डिस्कनेक्ट हो जाता है तो आपको मिलता है।

उम्मीद है कि इससे मदद मिलती है।

2

ऐसा लगता है कि चैट अनावश्यक हैं की तरह। संदेशों को बाद में विचार के रूप में चैट में समूहीकृत किया जाता है, आप एक बातचीत के अंदर कई चैट और फिर किसी भी चैट के बाहर कुछ संदेश प्राप्त कर सकते हैं। समूह के लिए नियम अस्पष्ट हैं, शायद समय के साथ।

समूहिंग एक ही मूल्य पर संदेशों के समूह के chatname फ़ील्ड को सेट करके किया जाता है। चैट के नाम #SenderId/$TargetId;ChatId या #SenderId/ChatId groupchat से अधिक चैट के लिए की तरह लग रहे।

चैट आईडी किसी विशेष अर्थ को पकड़ने लगते हैं और विभिन्न पीसी पर अलग-अलग हो सकते हैं।

चैट्स में प्रत्येक चैट को प्रवेश नहीं मिलता है: SELECT DISTINCT(chatname) FROM MessagesSELECT * FROM Chats से अधिक कई प्रविष्टियां देता है। chatname में जो कुछ भी जाता है वह चैट्स से चैट का नाम नहीं है। कभी-कभी यह एक वार्तालाप आईडी (== groupchat आईडी या skypename) है।

विभिन्न स्काइप उदाहरण भी चैट्स में समान सिंक्रनाइज़ किए गए संदेशों को अलग-अलग समूहबद्ध करते हैं।

तो मूल रूप से चैट महत्वपूर्ण नहीं हैं, वे मनमाने ढंग से संदेशों को समूहबद्ध करते हैं, उनमें कोई महत्वपूर्ण डेटा नहीं है कि किसने भेजा है।

यह मैं कैसे समझ में अन्य तालिकाओं काम है:

Contacts - यह हर किसी जिसका skypename डेटाबेस में बताया गया है, यहां तक ​​कि लोग आपके बारे में कभी पता नहीं था (जो कहा groupchat में कुछ समय में सुन रहे थे है)। is_permanent आपकी संपर्क सूची में उन लोगों को चिह्नित करता है।

Conversations - यह आपके वास्तविक संपर्कों और समूहचतियों का एक संघ है जो आप कभी शामिल हुए हैं। यह एक "संपर्क सूची" के रूप में देखना चाहिए। अगर आपको संपर्कों की आवश्यकता है तो आपने कभी संदेश नहीं जोड़े हैं, Contacts WHERE is_permanent=1 जोड़ें। यदि आप केवल मौजूदा संपर्क चाहते हैं, तो is_bookmarked या उसके जैसा कुछ फ़िल्टर करें।

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

Messages - यह सभी संदेशों और घटनाओं भेजे गए और प्राप्त है:

  • convo_id - हमेशा निर्धारित करते हैं, हमेशा एक बातचीत संदर्भ देता है। इस प्रकार आप पहचानते हैं कि संदेशों को किस संपर्क/समूहचैट भेजा गया था।

  • chatname - हमेशा सेट करें, कभी-कभी चट्स से चैट का संदर्भ देता है, कभी-कभी चैट चैट में नहीं होती है, कभी-कभी वार्तालाप से ग्रुपचैट आईडी या स्काईपेनमेम। अधिकतर इसे अनदेखा किया जा सकता है, या आप दृष्टि से इस क्षेत्र द्वारा संदेशों को समूहित कर सकते हैं।

  • author, from_name - जिसने इस संदेश और उनके निक को उस समय भेजा, हमेशा ठीक से सेट किया।

  • dialog_partner - कभी कभी निर्धारित करते हैं, कभी कभी नहीं, dialog_partner साथ के रूप में ही - अलग पीसी

  • participant_count पर एक ही संदेश के लिए बहुत अविश्वसनीय, विभिन्न मूल्यों: अविश्वसनीय।

  • identities - घटना से संबंधित सभी आकाशगंगाओं का उल्लेख करता है, या कभी-कभी नहीं। नियम अस्पष्ट, अविश्वसनीय हैं।

संबंधित मुद्दे