استفاده از LiteDB در PowerShell 7 – CloudSavvy IT


LiteDB یک پایگاه داده تعبیه شده .NET NoSQL است. داخلی .Net ، LiteDB به راحتی برای PowerShell قابل دسترسی است و به عنوان یک پایگاه داده محلی و انعطاف پذیر عالی عمل می کند. رمزگذاری داخلی ، دستورات SQL مانند و سازگار با ACID با پشتیبانی کامل از تراکنش LiteDB ساده و آسان برای استفاده است. در این مقاله ما در مورد چگونگی استفاده از LiteDB در PowerShell و موارد استفاده بالقوه صحبت خواهیم کرد!

LiteDB را در PowerShell نصب کنید

موجود در قالب یک بسته NuGet ، LiteDB را می توان به راحتی با استفاده از یک بسته نصب کرد Install-Package cmdlet آخرین نسخه ، در زمان انتشار ، یک نسخه است 5.0.9، که ما آن را به عنوان حداقل نسخه هدف قرار می دهیم. علاوه بر این ، برای جلوگیری از نیاز به حقوق اداری ، این مورد را در زیر نصب می کنیم CurrentUser محدوده.

Install-Package -Name 'LiteDB' -MinimumVersion '5.0.9' -Source 'nuget.org' -Scope 'CurrentUser'

سپس کتابخانه را برای استفاده وارد خواهیم کرد. شما فقط می توانید استفاده کنید Add-Type و به مسیر مونتاژ اشاره کنید ، اما ما می توانیم آن را خودکار کنیم.

# Test if we have already loaded the assembly by looking for the PSType of LiteDB.LiteDatabase
If ( -Not ([System.Management.Automation.PSTypeName]'LiteDB.LiteDatabase').Type ) {
	# 1) Get the path of the LiteDB package using the Source 
  # 2) This returns the *.nupkg file, so we use Split-Path to only return the package root path
  # 3) Multiple DLL's will exist, usually for .NET 4.5, .NET Standard 1.3, and .NET Standard 2.0. Locate only the .NET Standard and the latest version, in this case 2.0.
  # The path will look something like: C:\Users\username\AppData\Local\PackageManagement\NuGet\Packages\LiteDB.5.0.9\lib\netstandard2.0\LiteDB.dll
  $standardAssemblyFullPath = (Get-ChildItem -Filter '*.dll' -Recurse (Split-Path (Get-Package -Name 'LiteDB').Source)).FullName | Where-Object {$_ -Like "*standard*"} | Select-Object -Last 1
  
  Add-Type -Path $standardAssemblyFullPath -ErrorAction 'SilentlyContinue'
}

هنگامی که ماژول استفاده را بارگیری کردیم ، برای ایجاد یک پایگاه داده جدید LiteDB در بخش بعدی به ادامه مطلب بروید!

ایجاد یک پایگاه داده جدید LiteDB

چندین دستور LiteDB در دسترس است که می توانید در اینجا با آنها آشنا شوید ، اما ابتدا باید یک پایگاه داده کاملاً جدید ایجاد کنیم. باید مسیری را که می توان فایل پایگاه داده را ایجاد کرد تعیین کنیم. از آنجا که LiteDB پایگاه داده های تک فایل ایجاد می کند ، پایگاه داده را می توان در هر مکان قرار داد. در این حالت DB را در مسیر فعلی خود پیدا کرده و از نام استفاده می کنیم Test.db.

# Create the Test.db database in the current directory
$Database = [LiteDB.LiteDatabase]::New((Join-Path -Path "." -ChildPath "Test.db"))

این را در ذهن داشته باشید تا زمانی که تماس بگیرید $Database.Dispose() در پرونده پایگاه داده ، Test.db پرونده قفل خواهد ماند.

در بخش بعدی ، ما یک جدول ایجاد می کنیم ، یک فهرست اضافه می کنیم و یک رکورد جدید در پایگاه داده خود ایجاد می کنیم.

یک جدول ایجاد کنید و یک ورودی در LiteDB اضافه کنید

LiteDB مانند جداول در SQL از مجموعه هایی مشابه MongoDB استفاده می کند. برای این مقاله ما یک مجموعه جدید با یک نام ایجاد خواهیم کرد TestCollection، و با استفاده از GetCollection() اگر مجموعه دیگر وجود نداشته باشد ایجاد خواهد شد.

# Retrieve the collection (i.e. table) to store our data in.
$Collection = $Database.GetCollection('TestCollection')

# Make sure that an index exists on the Name field so that queries work easier and quicker.
# To allow for named queries, such as using the Name field, we ensure an index is created.
# The result is sent to Out-Null to avoid the True console output on creation.
$Collection.EnsureIndex('Name') | Out-Null

ایندکس ها با ارزش هستند زیرا باعث افزایش بهره وری می شوند و در هنگام جستجوی یک رکورد ، به راحتی کوئری هایی را می آورند که نامگذاری شوند. هر وقت جستجو انجام می شود ، با پرش از لیست ها ، فهرست ها از اسکن کامل و حذف پایگاه داده جلوگیری می کنند.

ورودی به مجموعه LiteDB اضافه کنید

اول ، ما باید راه اندازی کنیم LiteDB.BSONMapper. این پیاده سازی اسناد LiteDB است که جفت مقدار-کلید را ذخیره می کند. ما ابتدا یک نقشه بردار ایجاد می کنیم که می توانیم یک شی PowerShell را در یک سند تجزیه و تحلیل کنیم که با استفاده از آن می تواند به مجموعه ما اضافه شود Insert() روش.

$BSONMapper = [LiteDB.BSONMapper]::New()

$Object = @{
  "Name"  = 'TestName'
  "Value" = 'TestValue'
}

Try {
  # Attempt to insert the object as a new collection entry.
  $Collection.Insert($BSONMapper.ToDocument($Object))
} Catch {
  Throw "Unable to insert item."
}

درخواست مطالب در LiteDB

برای پرس و جو از یک شی در LiteDB ، می توانیم از چندین روش مختلف مانند موارد زیر استفاده کنیم:

  • FindAll() – تمام اسناد را به یک مجموعه برگردانید.
  • FindOne() – برمی گردد FirstOrDefault از یک Find() کاربرد.
  • FindById() – برمی گردد SingleOrDefault نتیجه ی Find() با استفاده از کلید اصلی _id فهرست مطالب.
  • Find() – تمام اسناد را با استفاده از عبارت تعریف شده برگردانید.

در این مثال ، بیایید تمام اسناد را جستجو کنیم و سپس فقط اسنادی را که به دنبال آن هستیم جستجو کنیم. ما همچنین می توانیم سند را با استفاده از بررسی کنیم Exists() روش. برای اثبات این موضوع ، ابتدا بررسی خواهیم کرد که آیا سند وجود دارد ، سپس اولین سند با نام را پیدا خواهیم کرد TestName و در آخر همه اسناد را پیدا کنید. برای نشان دادن روش دوم ، ما یک سند اضافی با همان نام اما مقدار متفاوت اضافه کردیم.

# Test if the `TestName` document exists
$Collection.Exists("`$.Name="TestName"")
# Return the first `TestName` document found
$Collection.FindOne("`$.Name="TestName"")
# Display all documents in a collection
$Collection.FindAll()

بررسی کنید که آیا سند وجود دارد ، سند خاص را پیدا کنید و سپس همه اسناد را پیدا کنید.

سندی را به روز کنید و حذف کنید

هنگامی که سندی را ایجاد کردیم ، بیایید مقدار را به روز کنیم. این کار با استفاده از یک نام مناسب انجام می شود Update() روش.

$Item = $Collection.FindOne("`$.Name="TestName"")

$Item['Value'] = 'UpdatedValue'

Try {
  # Attempt to update the existing document with the updated value
  $Collection.Update($Item)
} Catch {
  Throw "Unable to update item."
}

البته ممکن است نخواهیم این سند را نگه داریم. بنابراین ، ما می توانیم سند را با استفاده از حذف کنیم Remove() روش. این مستلزم دانستن شماره شناسایی سند است. از آنجا که ما در حال حاضر اطلاعات در $Item متغیر ، ما می توانیم استفاده کنیم _id خاصیت حذف سند.

Try {
	# Remove the entry using the _id attribute, internal to the LiteDB database
	$Collection.Delete($Item['_id'].RawValue)
} Catch {
	Throw "Unable to delete item."
}

تمیز کردن پایگاه داده و مراحل بعدی

از آنجا که هنگام استفاده از پایگاه داده قفل می شود ، باید تماس بگیریم Dispose() روش برداشتن قفل. این یک مرحله مهم است ، در غیر این صورت ممکن است در نهایت با فساد روبرو شویم.

$Database.Dispose()

با استفاده از این ، ما نمونه هایی از ایجاد پایگاه داده ، ایجاد و به روزرسانی اسناد و حذف آن اسناد را به انتها نشان دادیم. برنامه های کاربردی بسیاری برای LiteDB وجود دارد ، مانند یک پایگاه داده موقت برای جمع آوری داده ها در یک سرور ، برای یک سیستم ذخیره سازی اسناد سریع و قابل حمل که می توان به راحتی از آن پشتیبان تهیه کرد. به LiteDB نگاهی بیندازید و ببینید امروز چه کاری می توانید با آن انجام دهید!


منبع: khabar-mehman.ir

دیدگاهتان را بنویسید

Comment
Name*
Mail*
Website*