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

नोएसक्यूएल:एक स्कीमा के बिना जीवन

NoSql SQL डेटाबेस के लिए एक प्रतिस्थापन नहीं है, लेकिन कई स्थितियों के लिए एक मान्य विकल्प है जहाँ मानक SQL आपके डेटा को संग्रहीत करने के लिए सबसे अच्छा तरीका नहीं है।

चूंकि हमें सिखाया गया था कि जब भी आपको डेटा को "डेटा वेयरहाउस" में संग्रहीत करने और निष्कर्षण के लिए उस डेटा को क्वेरी करने की आवश्यकता होती है, तो SQL सबसे अच्छा समाधान है, आपको केवल यह तय करना है कि कौन सा SQL इंजन उपयोग करना है और गेम समाप्त हो गया है।

2012 में यह सुझाव गलत था, मेरा मतलब है कि अब आप यह नहीं मान सकते कि SQL डेटा स्टोर करने का "एकमात्र तरीका" है, लेकिन आपको पता होना चाहिए कि अन्य विकल्प भी हैं और उन्हें NO SQL कहा जाता है। इस टर्म के तहत, हमारे पास अलग-अलग स्टोरेज मैकेनिज्म हैं जो SQL पर आधारित नहीं हैं, और .NET में हमारे पास रेवेनडीबी नामक एक असाधारण उत्पाद है (आप मौरो ब्लॉग में रेवेनडीबी का वास्तव में अच्छा परिचय पा सकते हैं)।

मानक SQL के साथ पहला बड़ा अंतर स्कीमा की अनुपस्थिति है

SQL सर्वर की सबसे कष्टप्रद सीमाओं में से एक डेटा का सटीक प्रारूप निर्दिष्ट करने की आवश्यकता है जिसे आप अपने संग्रहण में संग्रहीत करना चाहते हैं। यह कई अच्छे कारणों से आवश्यक है, लेकिन ऐसी स्थितियां हैं जहां आप वास्तव में इसकी परवाह नहीं करते हैं, खासकर यदि आपका सॉफ़्टवेयर काफी हद तक ओओपी अवधारणा पर आधारित है। मान लीजिए आपके पास यह वस्तु है

<ब्लॉकक्वॉट>

1: class player

2: {

3: public String Name { get; set; }

4: {

5: public DateTime RegistrationDate { get; set; }

6: {

7: public Int32 Age { get; set; }

8: }

एक पल के लिए इस बात की कोई चिंता नहीं है कि यह वस्तु खराब रूप से एनकैप्सुलेटेड है (इसे प्राप्त करने और स्थापित करने का एक सार्वजनिक तरीका है), लेकिन केवल इस ऑब्जेक्ट को कहीं "स्टोर" करने की आवश्यकता पर केंद्रित है। यदि आप एक मानक SQL रिपॉजिटरी का उपयोग करते हैं, तो सबसे पहले आपको एक टेबल बनाने की आवश्यकता है, फिर कॉलम को परिभाषित करें, नाम कॉलम के लिए अधिकतम लंबाई को परिभाषित करें, और अंत में एक समर्पित डेटा लेयर का उपयोग करने या बनाने के लिए ORM का चयन करें, और अंत में, आप वस्तु को सहेज सकते हैं।

यदि आप एक कौवे के साथ काम कर रहे हैं, तो यही एकमात्र कोड है जिसकी आपको आवश्यकता है

<ब्लॉकक्वॉट>

1: var store = new DocumentStore { Url = "http://localhost:8080" };

2: store.Initialize();

3: using (var session = store.OpenSession()) . का उपयोग करके

4: {

5: var player = new Player

6: {

7: Age = 30,

8: RegistrationDate = DateTime.Now,

9: Name = "Alkampfer",

10: };

11: session.Store(player);

12: session.SaveChanges();

13: }

सर्वर केवल ऑब्जेक्ट लेता है और उसे सहेजता है।

किसी ऑब्जेक्ट को डेटा वेयरहाउस में सहेजने के लिए केवल दो कार्यों की आवश्यकता होती है:रिपॉजिटरी को उस ऑब्जेक्ट को बताने के लिए "सहेजें" जिसे आप सहेजना चाहते हैं, और "सेव चेंज", जो वास्तव में बचत करता है।

इस सरल कोड खंड के साथ आपको क्या मिलता है? बस सर्वर पते पर मानक ब्राउज़र पर जाएं और आपको डेटाबेस की सामग्री देखनी चाहिए।

साधारण वस्तु प्रविष्टि के बाद डेटाबेस सामग्री

चित्र में, आप डेटाबेस क्रो की सामग्री देख सकते हैं, इसमें एक खिलाड़ी होता है और ऑब्जेक्ट के बगल में एक छोटा 1 Id होता है, जिसे रेवेन आंतरिक रूप से इस ऑब्जेक्ट की विशिष्ट पहचान के लिए उपयोग करता है। एक अन्य वस्तु, जिसे Sys Doc Hilo / Players कहा जाता है, हिलो एल्गोरिथम के साथ प्लेयर्स ऑब्जेक्ट के लिए एक पहचानकर्ता उत्पन्न करने का ध्यान रखती है।

यह सब है, योजना को परिभाषित करने की कोई आवश्यकता नहीं है, वस्तु को भंडार के साथ संगत बनाने के लिए किसी विशेष आईडी संपत्ति या किसी अन्य आवश्यकता की आवश्यकता नहीं है, बस किसी भी .NET ऑब्जेक्ट के लिए स्टोर विधि को कॉल करें, और आपकी वस्तु डेटाबेस में है, अवधि!

स्टीवन लॉट | NoSQL का मतलब नो स्कीमा नहीं है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समानांतर योजनाएँ कैसे शुरू होती हैं - भाग 2

  2. पूर्ण-पाठ खोज में हिट-हाइलाइटिंग

  3. डेटाबेस स्तर के संयोजन को समझना और डेटाबेस के लिए इसे बदलने का प्रभाव

  4. Azure डेटा लेक में दस्तावेज़ अपलोड करें और SSIS का उपयोग करके डेटा निर्यात करें

  5. SQL में स्ट्रिंग को लोअरकेस में कैसे बदलें