Marten C# (.NET): PostgreSQL पर Document DB और Event Store की पूरी गाइड
Marten एक शक्तिशाली .NET लाइब्रेरी है जो PostgreSQL को एक हाइब्रिड डेटा स्टोरेज में बदल देती है, जो Document Database (डॉक्यूमेंट डेटाबेस) और Event Store (इवेंट स्टोर) दोनों की क्षमताओं को जोड़ती है। JasperFx टीम द्वारा विकसित, यह डेवलपर्स को PostgreSQL के साथ NoSQL-जैसी प्रणाली की तरह काम करने की अनुमति देती है, जबकि रिलेशनल डेटाबेस के सभी लाभों को बरकरार रखती है।
Marten की आवश्यकता क्यों है? आधुनिक डेवलपमेंट में अक्सर जटिल, कम-संरचित डेटा को स्टोर करने के लिए Document DB (जैसे MongoDB) की लचीलापन और साथ ही रिलेशनल डेटाबेस की विश्वसनीयता और ट्रांजेक्शनल क्षमता की आवश्यकता होती है। Marten इस समस्या को हल करता है, PostgreSQL में संग्रहीत JSON दस्तावेज़ों के साथ काम करने के लिए LINQ प्रदाता और Event Sourcing और CQRS पैटर्न को लागू करने के लिए एक पूर्ण Event Store प्रदान करता है। यह विशेष रूप से माइक्रोसर्विस आर्किटेक्चर, ऑडिट सिस्टम, वित्तीय अनुप्रयोगों और किसी भी प्रोजेक्ट में उपयोगी है जहां डेटा स्कीमा की लचीलापन और सख्त स्थिरता के संयोजन की आवश्यकता होती है।
यह लाइब्रेरी सक्रिय रूप से समर्थित है और प्रोडक्शन प्रोजेक्ट्स में उपयोग की जाती है। यह ASP.NET Core, Entity Framework Core (आवश्यकता होने पर) के साथ एकीकृत होती है, और डेटा के साथ काम करने के लिए एक समृद्ध API प्रदान करती है। Marten स्वचालित रूप से डेटाबेस स्कीमा बनाता और अपडेट करता है, माइग्रेशन, इंडेक्स और यहां तक कि फुल-टेक्स्ट सर्च का समर्थन करता है। यह इसे .NET डेवलपर्स के लिए एक उत्कृष्ट विकल्प बनाता है जो जटिल SQL कोड लिखे बिना PostgreSQL की शक्ति का उपयोग करना चाहते हैं।
इंस्टॉलेशन
Marten की इंस्टॉलेशन NuGet Package Manager के माध्यम से की जाती है। निम्नलिखित कमांड में से कोई एक चलाएं:
dotnet add package Marten
या Package Manager Console के माध्यम से:
Install-Package Marten
Event Store के साथ काम करने के लिए किसी अतिरिक्त पैकेज की आवश्यकता नहीं है - सब कुछ मुख्य पैकेज में शामिल है। ASP.NET Core के साथ एकीकरण के लिए Marten.AspNetCore इंस्टॉल करने की भी सिफारिश की जाती है:
dotnet add package Marten.AspNetCore
त्वरित शुरुआत
न्यूनतम कार्यशील उदाहरण में PostgreSQL से कनेक्शन सेटअप करना, एक दस्तावेज़ परिभाषित करना और CRUD ऑपरेशन करना शामिल है।
using Marten;
using System;
using System.Threading.Tasks;
// 1. दस्तावेज़ परिभाषित करें
public class User
{
public Guid Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
class Program
{
static async Task Main(string[] args)
{
// 2. DocumentStore कॉन्फ़िगर करें
var store = DocumentStore.For(options =>
{
options.Connection("Host=localhost;Database=marten_db;Username=postgres;Password=password");
options.AutoCreateSchemaObjects = AutoCreate.All; // ऑटो टेबल निर्माण
});
// 3. काम करने के लिए सेशन खोलें
using var session = store.LightweightSession();
// 4. दस्तावेज़ बनाएं
var user = new User
{
Id = Guid.NewGuid(),
Name = "राहुल शर्मा",
Age = 30,
Email = "rahul@example.com"
};
session.Store(user);
await session.SaveChangesAsync();
// 5. ID के आधार पर दस्तावेज़ लोड करें
var loadedUser = await session.LoadAsync<User>(user.Id);
Console.WriteLine($"उपयोगकर्ता लोड किया गया: {loadedUser.Name}, आयु: {loadedUser.Age}");
// 6. दस्तावेज़ अपडेट करें
loadedUser.Age = 31;
session.Store(loadedUser);
await session.SaveChangesAsync();
// 7. दस्तावेज़ हटाएं
session.Delete(loadedUser);
await session.SaveChangesAsync();
Console.WriteLine("हो गया!");
}
}
यह उदाहरण बुनियादी ऑपरेशन दिखाता है: दस्तावेज़ बनाना, पढ़ना, अपडेट करना और हटाना। Ma