$ sqlite3 servers.sqlite3
SQLite version 3.7.14.1 2012-10-04 19:37:12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite»
اگر نام فايل قبلا وجود نداشته باشد، ديتابيس جديدي ايجاد ميشود. ميتوان هر پسوندي را براي نام فايل انتخاب كرد. نامهايي چونdb. از متداولترين پسوندها براي SQLite است. دستورهاي SQL را ميتوان مستقيما وارد سيستم كرد، همچنين ميتوان به پيكربندي ديتابيس و انجام كارهاي مديريتي پرداخت. با تايپhelp. فهرستي از متادستورهاي پشتيباني شده نشان داده ميشود.بياييد جدول كوچكي ايجاد كنيم تا اطلاعاتي در مورد سرورهاي موجود در شبكهمان ذخيره كنيم.
sqlite» CREATE TABLE Servers( Hostname TEXT PRIMARY KEY, IPAddress TEXT, Role TEXT, Status TEXT, Timestamp INT );
sqlite» .tables
Servers
اين دستور، همان دستور آشنا و استاندارد SQL است كه با نقطهويرگول به پايان رسيده است. SQLite از چند ديتاتايپ پشتيباني ميكند: NULL براي خالي بودن، INTEGER و REAL براي اعداد علامتدار و مميزدار، TEXT براي متون و BLOB براي فايلهاي باينري.برخلاف ديگر ديتابيسهاي SQL، SQLite از تايپ ديناميك استفاده ميكند و ديتاتايپ يك مقدار با خود مقدار تعيين ميشود و ارتباطي به ظرفش ندارد. در نتيجه ميتوان هر مقداري را در هر ستون قرار داد و كاري به نوع ذخيره شده نداشت.دستورtable. فهرستي از جداول موجود در ديتابيس را نشان ميدهد.حالا ميتوان تعدادي ركورد در جدولمان ذخيره كنيم يا اين كار را از طريق يك اسكريپت پوسته انجام دهيم.
#!/bin/sh
_DB="servers.sqlite3"
printf "Hostname: "
read _HOSTNAME
printf "${_HOSTNAME}'s IP Address: "
read _IP
printf "${_HOSTNAME}'s role: "
read _ROLE
sqlite3 $_DB "INSERT INTO Servers(Hostname, IPAddress, Role)
VALUES('${_HOSTNAME}', '${_IP}', '${_ROLE}')"
اگر اين اسكريپت را اجرا كنيم، يكي دو ركورد در ديتابيسمان ذخيره خواهد شد.
$ ./server_add.sh
Hostname: mx1
mx1's IP Address: 1.2.3.4
mx1's role: Mail
$ ./server_add.sh
Hostname: www1
www1's IP Address: 2.3.4.5
www1's role: Web
دستور sqlite3 ميتواند يك عبارت SQL را با اجراي آرگومان سومي بعد از نام فايل اجرا كند. انتهاي دستور دوباره نقطه ويرگول قرار داده ميشود.
$ sqlite3 servers.sqlite3 "SELECT * FROM Servers"
mx1|1.2.3.4|Mail||
www1|2.3.4.5|Web||
اسكريپتهاي شلي را به همين ترتيب ميتوان ايجاد كرد كه كارهاي مختلف مديريت سيستم را انجام دهد و حتي برنامههايي بسيار ساده با قابليت ذخيره گزارش داشته باشيم.در مثال بعدي، بهطور گستردهتري از ديتابيسي كه ساختهايم استفاده خواهيم كرد. اسكريپت ساخته شده را به كمك Cron در فواصل زماني مختلف اجرا ميكنيم. اين اسكريپت سرورهاي شبكه را چك و ستون Status و Timestamp هر سرور را در ديتابيس بهروز ميكند.
#!/usr/bin/env perl
use strict;
use warnings;
use DBI;
my $db = "servers.sqlite3";
my $dbh = DBI-»connect(
"DBI:SQLite:${db}",
undef, undef,
{ RaiseError =» 1 }
) or die "Can't connect to database: $DBI::errstr";
sub server_check {
my ($hostname, $ip, $role) = @_;
print "Add check logic based on hostname, ip and server role\n";
return 1;
}
my $servers = $dbh-»selectall_arrayref("SELECT * FROM Servers");
foreach my $server (@$servers) {
variables
my ($hostname, $ip, $role, $status, $timestamp) = @$server;
my $rc = server_check($hostname, $ip, $role);
if($rc » 0) {
$status = 'good';
} else {
$status = 'bad';
}
current
my $sth = $dbh-»prepare(
"UPDATE Servers SET Status = ?, Timestamp = ?" );
$sth-»execute($status, time());
}
$dbh-»disconnect();
اين برنامه منطق كافي براي تشخيص مقدار صحيح را ندارد و همواره True را قرار ميدهد. با استفاده از Curl، LWP يا ابزارهاي ديگر ميتوان سابروتين مربوط را ايجاد كرد.مثال بعدي، نرمافزار كوچكي است كه با استفاده از PHP نوشته شده است. از طريق افزونه PDO ميتوان از SQLite استفاده كرد. PDO شباهت زيادي به ماژول DBI در پرل دارد كه در مثال قبلي از آن استفاده شد. قطعه كد زير را ببينيد:
«?php
try {
$db = 'servers.sqlite3';
$dbh = new PDO("sqlite:$db");
$servers = $dbh-»prepare( "SELECT * FROM Servers" );
$servers-»execute();
} catch (Exception $e) { die ($e); }
?»
نرمافزارها و برنامههاي تحت وب زيادي وجود دارد كه مديريت ديتابيسهاي SQLite را بسرعت و بسادگي انجام ميدهد. يكي از برنامههاي تحت وب مديريت SQL، Adminer است كه MySQL، PostgreSQL، MSSQL، Oracle و SQLite را در فهرست پشتيباني خودش دارد.از SQLite ميتوان در پروژههاي بزرگي مثل نرمافزارهاي تحت وب استفاده كرد تا در مصرف منابع سيستمي صرفهجويي شود. هر چند بايد محدوديتهاي استفاده از SQLite را شناخت و آنها را بدرستي استفاده كرد. SQLite امكان دسترسي از طريق چند پروسس همزمان را ميدهد و مكانيزم قفل كردن خاص خودش را دارد، اما دقت ديگر موتورهاي ديتابيس از جمله PostgreSQL بالاتر است. اينديتابيسها همچنين پديدهاي بهنام سطوح دسترسي و احراز هويت را ندارند و اين يكي از نقصهاي فايلهاي SQLite بهشمار ميرود.
.: Weblog Themes By Pichak :.