इन दिनों रिलेशनल डेटाबेस को अक्षम होने के लिए खटखटाया जाता है, लेकिन जब आप जिस प्रकार के लॉग के बारे में बात कर रहे हैं, उसे स्टोर करने के लिए, आपको वास्तव में दक्षता की आवश्यकता नहीं है क्योंकि वे गेम या इसके उपयोगकर्ताओं द्वारा लगातार एक्सेस नहीं किए जाएंगे - केवल आपकी टीम की आवश्यकता होगी डेटा पढ़ने के लिए।
तो "दक्षता" बहुत मायने नहीं रखती है। क्या अधिक मायने रखता है कि डेटा को इस तरह से आदेश दिया जा रहा है जिससे गेम में उपयोगकर्ता क्या कर रहे हैं, इसकी कहानी को बताना आसान हो जाता है। आपके डेवलपर्स को आम तौर पर इस डेटा का उपभोग करना होगा और इसे एक इंटरफ़ेस में प्रदर्शित करना होगा जो विश्लेषकों के लिए पढ़ना आसान है और विश्लेषकों को कभी-कभी उपयोगकर्ता के व्यवहार में गहरी खुदाई करने के लिए डेटा को क्वेरी करने की आवश्यकता होगी। उदाहरण के लिए, यदि खिलाड़ी अपडेट से पहले एक निश्चित आइटम खरीद रहे हैं, लेकिन अपडेट के बाद उसे खरीदना बंद कर दें, तो एक विश्लेषक कुछ प्रश्न लिखकर लाभान्वित करेगा जो उस खरीद के आसपास के व्यवहार के बारे में कुछ संख्याओं को उजागर करते हैं ताकि यह निर्धारित किया जा सके कि उपयोगकर्ता अब इसे क्यों नहीं खरीदते हैं। यह अच्छी तरह से है अगर उनके पास मानक क्वेरी भाषा है जो अच्छी तरह से प्रलेखित है। अगर उन्हें इन प्रश्नों को एक कस्टम बाइनरी प्रारूप में बनाना है, तो उनकी नौकरियों को कठिन बना दिया जाएगा,
आम तौर पर गेम ईवेंट कुछ इस तरह दिखते हैं (यह विशेष रूप से डेल्टाडीएनए का प्रारूप है)
{
"eventName":"specific event code – eg. gameStarted",
"userID":"ABCD1-4321a879b185fcb9c6ca27abc5387e914",
"sessionID":"4879bf37-8566-46ce-9f3b-bd18d6ac614e",
"eventTimestamp":"yyyy-mm-dd hh:mm:ss.SSS",
"eventParams":
{
"platform":"WEB",
"param1":"stringParam",
"param2":true,
"param3":1234,
"param4":["a","b","c"]
},
}
घटना में आमतौर पर एक घटना का नाम, एक उपयोगकर्ता नाम, एक सत्र आईडी, टाइमस्टैम्प, और पैरामीटर शामिल होते हैं जो आपको उस घटना के आसपास रिकॉर्ड करने के लिए जो भी डेटा उपयोगी लगता है उसे रिकॉर्ड करने की अनुमति देते हैं। और मेरे अनुभव में, इस तरह की संरचना को रिकॉर्ड करने के लिए रिलेशनल डेटाबेस प्रारूप सर्वश्रेष्ठ हैं।