SQLite മന്ദഗതിയിലാണെന്ന് എല്ലാവരും പരാതിപ്പെടുന്നത് എന്തുകൊണ്ട്? "സാമാന്യം പൂർണ്ണമായ SQL സെറ്റ്" എന്താണ് അർത്ഥമാക്കുന്നത്?

ആമുഖം

ഭാഷ ഉപയോഗിച്ച് അന്വേഷിക്കാൻ കഴിയുന്ന ഒരു റിലേഷണൽ ഡാറ്റാബേസാണ് SQLite SQL അന്വേഷണങ്ങൾ. ഡാറ്റാബേസ് SQL-ന്റെ എല്ലാ സവിശേഷതകളെയും പിന്തുണയ്ക്കുന്നില്ല, കൂടാതെ മറ്റ് വികസിപ്പിച്ച DBMS-കളേക്കാൾ പ്രവർത്തനക്ഷമതയിൽ ഇത് താഴ്ന്നതാണ്, എന്നാൽ വിവരങ്ങൾ ശേഖരിക്കുന്നതിനും വീണ്ടെടുക്കുന്നതിനും ഇത് തികച്ചും അനുയോജ്യമാണ്.

SQLite, MySQL എന്നിവയും സമാനമായ DBMS-കളും തമ്മിലുള്ള വ്യത്യാസം

MySQL (അതുപോലെ MS SQL, Oracle, PostgreeSQL) പോലുള്ള ക്ലാസിക് DBMS-കളിൽ ഇവ ഉൾപ്പെടുന്നു പ്രത്യേക സെർവർ, ഇത് ഡാറ്റാബേസിന്റെ പ്രവർത്തനത്തെ പിന്തുണയ്ക്കുകയും ക്ലയന്റ് അഭ്യർത്ഥനകൾക്കായി ഒരു പ്രത്യേക പോർട്ടിൽ ശ്രദ്ധിക്കുകയും ചെയ്യുന്നു. ഉപഭോക്താവിനും ആകാം PHP വിപുലീകരണം, ഡാറ്റാബേസിലേക്കുള്ള അന്വേഷണങ്ങൾ നടത്തുന്ന ഇന്റർഫേസ് ഇത് നടപ്പിലാക്കുന്നു. SQLite എഞ്ചിനും അതിന്റെ ഇന്റർഫേസും ഒരു ലൈബ്രറിയിൽ നടപ്പിലാക്കുന്നു, ഇത് അന്വേഷണ നിർവ്വഹണത്തിന്റെ വേഗത വർദ്ധിപ്പിക്കുന്നു. ഈ സെർവർ പലപ്പോഴും വിളിക്കപ്പെടുന്നു അന്തർനിർമ്മിത.

അഭിപ്രായം

MySQL പോലുള്ള മറ്റ് ഡാറ്റാബേസുകൾക്കും ഒരു ബിൽറ്റ്-ഇൻ സെർവർ ഉണ്ട്, എന്നാൽ അതിന്റെ ഉപയോഗത്തിന് ലൈസൻസിംഗ് ഫീസ് ആവശ്യമാണ്, അതിനാൽ ഓപ്പൺ സോഴ്‌സ് ലോകത്ത് ഇത് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നില്ല.

SQLite ഒരു ടൈപ്പ് രഹിത ഡാറ്റാബേസ് ആണ്. കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, രണ്ട് തരം മാത്രമേയുള്ളൂ - പൂർണ്ണസംഖ്യ "പൂർണ്ണസംഖ്യ", ടെക്സ്റ്റ് "ടെക്സ്റ്റ്". കൂടാതെ, "പൂർണ്ണസംഖ്യ" പ്രധാനമായും ഉപയോഗിക്കുന്നത് പ്രാഥമിക കീപട്ടികകൾ, കൂടാതെ ബാക്കിയുള്ള ഡാറ്റയ്ക്ക് "ടെക്സ്റ്റ്" പോകും. ടെക്സ്റ്റ് ഫീൽഡിൽ എഴുതിയിരിക്കുന്ന സ്ട്രിംഗിന്റെ നീളം എത്ര വേണമെങ്കിലും ആകാം.

SQLite-ന്റെ സവിശേഷതകൾ

എല്ലാ ഡാറ്റാബേസുകളും ഫയലുകളിൽ സംഭരിച്ചിരിക്കുന്നു, ഓരോ ഡാറ്റാബേസിനും ഒരു ഫയൽ. ഡാറ്റാബേസുകളുടെ എണ്ണവും അവയിലെ പട്ടികകളും പരിമിതമാണ് സ്വതന്ത്ര സ്ഥലംസൈറ്റിൽ ലഭ്യമാണ്. ഒരു ഡാറ്റാബേസിന്റെ പരമാവധി വലുപ്പം 2 TB ആണ്.

എല്ലാ ഡാറ്റയും ഫയലുകളിൽ സംഭരിച്ചിരിക്കുന്നതിനാൽ, ഒരു ഹോസ്റ്റിംഗിൽ നിന്ന് മറ്റൊന്നിലേക്ക് ഒരു ഡാറ്റാബേസ് കൈമാറുന്നതിൽ പ്രശ്നങ്ങളൊന്നുമില്ല - നിങ്ങൾ അനുബന്ധ ഫയലുകൾ പകർത്തേണ്ടതുണ്ട്.

SQLite ഇൻസ്റ്റാൾ ചെയ്യുന്നു

PHP5-ൽ, SQLite പിന്തുണ ഇൻസ്റ്റാൾ ചെയ്യുകയും സ്ഥിരസ്ഥിതിയായി പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുന്നു.

വിൻഡോസിന് കീഴിലുള്ള ഇൻസ്റ്റാളേഷൻ: SQLite ഇൻസ്റ്റാൾ ചെയ്യാൻ, നിങ്ങൾ "php_sqlite.dll" ലൈബ്രറി ഡൗൺലോഡ് ചെയ്ത് വിപുലീകരണ ഫോൾഡറിലേക്ക് പകർത്തേണ്ടതുണ്ട്, അത് ലിങ്കിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യാം: http://snaps.php.net/win32/PECL_STABLE/php_sqlite.dll. തുടർന്ന് "php.ini" ഫയലിലെ "extension=php_sqlite.dll" എന്ന വരി നിങ്ങൾ അൺകമന്റ് ചെയ്യണം (അല്ലെങ്കിൽ ചേർക്കുക). SQLite ശരിയായി പ്രവർത്തിക്കുന്നതിന്, നിങ്ങൾ "extension=php_pdo.dll" എന്ന വരിയും അൺകമന്റ് ചെയ്യേണ്ടതുണ്ട്.

അഭിപ്രായം

അഭിപ്രായം

"php_sqlite.dll" ലോഡുചെയ്യുന്നതിന് മുമ്പ് ലൈബ്രറി "php_pdo.dll" ലോഡ് ചെയ്തിരിക്കണം. അതായത്, php.ini-ൽ "extension=php_sqlite.dll" എന്ന വരി "extension=php_pdo.dll" എന്നതിന് ശേഷം ദൃശ്യമാകണം.

Unix-ന് കീഴിൽ ഇൻസ്റ്റലേഷൻ:ഔദ്യോഗിക വെബ്‌സൈറ്റിൽ നിന്ന് (http://sqlite.org/download.html) SQLite-ന്റെ ഏറ്റവും പുതിയ പതിപ്പ് ഡൗൺലോഡ് ചെയ്യുക. ഉറവിട മൊഡ്യൂൾ പരിശോധനകൾക്കൊപ്പം നൽകിയ "ഇൻസ്റ്റാൾ" ഫയൽ വായിക്കുക. അല്ലെങ്കിൽ PEAR ഇൻസ്റ്റലേഷൻ കമാൻഡ് ഉപയോഗിക്കുക: "pear install sqlite".

SQLite-ൽ പ്രവർത്തിക്കുന്നു

ഡാറ്റാബേസ് സൃഷ്ടിക്കൽ:ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കുന്നതിന്, നിങ്ങൾ sqlite_open() ഫംഗ്ഷൻ ഉപയോഗിക്കണം. "ഫയൽനാമം" പരാമീറ്ററിൽ പേര് നൽകിയിരിക്കുന്ന ഡാറ്റാബേസ് നിലവിലില്ലെങ്കിൽ, ഫംഗ്ഷൻ "ഫയൽനാമം" എന്ന പേരിൽ ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കുകയും ഡാറ്റാബേസ് ഐഡന്റിഫയർ തിരികെ നൽകുകയും ചെയ്യും.

റിസോഴ്സ് sqlite_open (സ്ട്രിംഗ് ഫയലിന്റെ പേര് [, int മോഡ് [, string &error_message]])

ചുവടെയുള്ള സ്ക്രിപ്റ്റ് സൃഷ്ടിയെ പ്രകടമാക്കുന്നു പുതിയ അടിത്തറഡാറ്റ:

// ഒരു ഡാറ്റാബേസ് സൃഷ്ടിക്കുക

എങ്കിൽ (! $db ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസ് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു!");
?>

തൽഫലമായി, സ്ക്രിപ്റ്റ് ഉള്ള ഫോൾഡറിൽ "my_database.db" എന്ന പേരിൽ ഒരു ഫയൽ ഉണ്ടാകും - ഞങ്ങളുടെ ഡാറ്റാബേസ്.

പട്ടികകൾ സൃഷ്ടിക്കുന്നു:ഡാറ്റാബേസിലേക്കുള്ള എല്ലാ അന്വേഷണങ്ങളും നടപ്പിലാക്കുന്നത് sqlite_query() ഫംഗ്‌ഷൻ ആണ്, അതിന് ഇനിപ്പറയുന്ന വാക്യഘടനയുണ്ട്:

റിസോഴ്സ് sqlite_query (റിസോഴ്സ് ഡിബാൻഡിൽ, സ്ട്രിംഗ് അന്വേഷണം)

അഭിപ്രായം

ഏത് പോലെ SQLite ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ ആപേക്ഷിക അടിത്തറ SQL അന്വേഷണ ഭാഷ ഉപയോഗിക്കുന്ന ഡാറ്റ. അതിനാൽ, പരമ്പരാഗത ക്രിയേറ്റ് ടേബിൾ ചോദ്യം ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു ഡാറ്റ ടേബിൾ സൃഷ്ടിക്കാനും, INSERT സ്റ്റേറ്റ്മെന്റ് ഉപയോഗിച്ച് ഒരു റെക്കോർഡ് തിരുകാനും, ഉപയോഗിച്ച് റെക്കോർഡ് വീണ്ടെടുക്കാനും കഴിയും സഹായിക്കുക SELECT, ഒപ്പം അപ്ഡേറ്റ് നിലവിലുള്ള പ്രവേശനംഒരു അപ്ഡേറ്റ് അഭ്യർത്ഥന ഉപയോഗിക്കുന്നു.

ചുവടെയുള്ള ഉദാഹരണം മൂന്ന് ഫീൽഡുകൾ അടങ്ങുന്ന ഒരു പട്ടിക പട്ടിക 1 സൃഷ്ടിക്കുന്നു: പ്രാഥമിക കീ ആയി പ്രവർത്തിക്കുന്ന ഒരു പൂർണ്ണ ഐഡി ഫീൽഡ്, കൂടാതെ രണ്ട് ടെക്സ്റ്റ് ഫീൽഡുകൾഫീൽഡ്1, ഫീൽഡ്2.

$db = sqlite_open("my_database.db" );
എങ്കിൽ (! $db ) പുറത്തുകടക്കുക();
"പട്ടിക 1 സൃഷ്ടിക്കുക
(ഐഡി ഇന്റിഗർ പ്രൈമറി കീ,
ഫീൽഡ്1 ടെക്സ്റ്റ്,
ഫീൽഡ്2 TEXT);
"
);
എങ്കിൽ (! $query_table ) എക്സിറ്റ്();
$query_insert = sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങൾ ("PHP5", "അപ്പാച്ചെ") എന്നിവയിൽ ചേർക്കുക;");
എങ്കിൽ (! $query_insert ) പുറത്തുകടക്കുക( "ടേബിളിലേക്ക് ഡാറ്റ എഴുതാൻ കഴിയുന്നില്ല!");
?>

പട്ടിക സൃഷ്ടിച്ച ശേഷം, അതിൽ "PHP5", "Apache" എന്നീ വരികൾ അടങ്ങിയ ഒരു റെക്കോർഡ് ചേർക്കുന്നു, ഐഡി ഫീൽഡിന് സ്വയമേവ മൂല്യം 1 ലഭിക്കുന്നു.

ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റ ഔട്ട്പുട്ട് ചെയ്യുന്നു:പട്ടികകളിൽ നിന്ന് ഡാറ്റ പ്രദർശിപ്പിക്കുന്നതിന്, അതേ പ്രവർത്തനം ഉപയോഗിക്കുന്നു - sqlite_query(). ഒന്നിലധികം റെക്കോർഡുകൾ ലഭിച്ചിട്ടുണ്ടെങ്കിൽ, ഇനിപ്പറയുന്ന വാക്യഘടനയുള്ള ഒരു while() ലൂപ്പും sqlite_fetch_array() ഫംഗ്‌ഷനും ഉപയോഗിച്ച് നേടൽ ഫലം പ്രോസസ്സ് ചെയ്യണം:

അറേ sqlite_fetch_array (റിസോഴ്സ് ഫലം [, int result_type [, bool decode_binary]])

ഡാറ്റാബേസിൽ നിന്നുള്ള നിരവധി റെക്കോർഡുകളുടെ ഔട്ട്പുട്ട് പ്രദർശിപ്പിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ചുവടെയുണ്ട്:

// ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കുക
$db = sqlite_open("my_database.db" );
എങ്കിൽ (! $db ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// ഡാറ്റാബേസിൽ പട്ടിക "ടേബിൾ 1" സൃഷ്ടിക്കുക
$query_table = sqlite_query ($db, "പട്ടിക 1 സൃഷ്ടിക്കുക
(ഐഡി ഇന്റിഗർ പ്രൈമറി കീ,
/* ഐഡി സ്വയമേവ യാന്ത്രികമായി വർദ്ധിക്കും */
ഫീൽഡ്1 ടെക്സ്റ്റ്,
ഫീൽഡ്2 TEXT);
"
);
എങ്കിൽ (! $query_table ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസിൽ പട്ടിക സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// മേശയിൽ എന്തെങ്കിലും എഴുതുക
sqlite_query($db, );
sqlite_query($db, );
sqlite_query($db, );
// നമുക്ക് ഡാറ്റ സാമ്പിൾ ചെയ്യാം
$res = sqlite_query ($db, "ടേബിൾ1ൽ നിന്ന് * തിരഞ്ഞെടുക്കുക;" );
അതേസമയം ($array = sqlite_fetch_array ($res))
{

" );
}
?>

സ്ക്രിപ്റ്റിന്റെ ഫലമായി നമുക്ക് ലഭിക്കുന്നത്:

PHP5+Apache (എൻട്രി ഐഡി:1)

ഒരു പോസ്റ്റ് എഡിറ്റുചെയ്യുന്നു: ഒരു ഫീൽഡ് മാറ്റുന്നതിന്, ഞങ്ങൾ sqlite_query() ഫംഗ്‌ഷൻ ഉപയോഗിക്കുകയും അതിന് ഒരു അപ്‌ഡേറ്റ് അഭ്യർത്ഥന നൽകുകയും ചെയ്യും (UPDATE).

// ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കുക
$db = sqlite_open("my_database.db" );
എങ്കിൽ (! $db ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// ഡാറ്റാബേസിൽ പട്ടിക "ടേബിൾ 1" സൃഷ്ടിക്കുക
$query_table = sqlite_query ($db, "പട്ടിക 1 സൃഷ്ടിക്കുക
(ഐഡി ഇന്റിഗർ പ്രൈമറി കീ,
/* ഐഡി സ്വയമേവ യാന്ത്രികമായി വർദ്ധിക്കും */
ഫീൽഡ്1 ടെക്സ്റ്റ്,
ഫീൽഡ്2 TEXT);
"
);
എങ്കിൽ (! $query_table ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസിൽ പട്ടിക സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// മേശയിൽ എന്തെങ്കിലും എഴുതുക
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങൾ ("PHP5+", "അപ്പാച്ചെ") എന്നിവയിൽ ചേർക്കുക;");
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങളിൽ ചേർക്കുക ("SQLite - ", "കൂൾ കാര്യം");");
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങളിൽ ചേർക്കുക ("സന്ദർശിക്കുക ", "sqlite.org");");
// ഐഡി=1 ഉപയോഗിച്ച് ഫീൽഡ് മാറ്റുക
sqlite_query ($db, "ടേബിൾ1 സെറ്റ് ഫീൽഡ്2="അപ്പാച്ചെ+ലിനക്സ്" എവിടെയാണ് ഐഡി=1;);
// നമുക്ക് ഡാറ്റ സാമ്പിൾ ചെയ്യാം

// ലഭിച്ച എല്ലാ ഡാറ്റയും ഒരു ലൂപ്പിൽ ഞങ്ങൾ പ്രദർശിപ്പിക്കും

{
echo($array [ "field1" ]. $array [ "field2" ]. " (എൻട്രി ഐഡി: " . $array [ "id" ]. ")
" );
}
?>

ഫലമായി നമുക്ക് ലഭിക്കുന്നത്:

PHP5+Apache+Linux (എൻട്രി ഐഡി:1)
SQLite ഒരു രസകരമായ കാര്യമാണ് (പോസ്റ്റ് ഐഡി: 2)
sqlite.org സന്ദർശിക്കുക (പോസ്റ്റ് ഐഡി:3)

ഒരു പട്ടികയിൽ നിന്ന് ഒരു റെക്കോർഡ് നീക്കംചെയ്യുന്നു: ഒരു പട്ടികയിൽ നിന്ന് ഒരു റെക്കോർഡ് ഇല്ലാതാക്കാൻ, നിങ്ങൾ sqlite_query() ഫംഗ്‌ഷനിലേക്ക് ഒരു ഡിലീറ്റ് അഭ്യർത്ഥന (DELETE) നൽകേണ്ടതുണ്ട്.

// ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കുക
$db = sqlite_open("my_database.db" );
എങ്കിൽ (! $db ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// ഡാറ്റാബേസിൽ പട്ടിക "ടേബിൾ 1" സൃഷ്ടിക്കുക
$query_table = sqlite_query ($db, "പട്ടിക 1 സൃഷ്ടിക്കുക
(ഐഡി ഇന്റിഗർ പ്രൈമറി കീ,
/* ഐഡി സ്വയമേവ യാന്ത്രികമായി വർദ്ധിക്കും */
ഫീൽഡ്1 ടെക്സ്റ്റ്,
ഫീൽഡ്2 TEXT);
"
);
എങ്കിൽ (! $query_table ) പുറത്തുകടക്കുക( "ഡാറ്റാബേസിൽ പട്ടിക സൃഷ്ടിക്കാൻ കഴിയുന്നില്ല!");
// മേശയിൽ എന്തെങ്കിലും എഴുതുക
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങൾ ("PHP5+", "അപ്പാച്ചെ") എന്നിവയിൽ ചേർക്കുക;");
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങളിൽ ചേർക്കുക ("SQLite - ", "കൂൾ കാര്യം");");
sqlite_query ($db, "ടേബിൾ 1 (ഫീൽഡ്1, ഫീൽഡ്2) മൂല്യങ്ങളിൽ ചേർക്കുക ("സന്ദർശിക്കുക ", "sqlite.org");");
// ഐഡി=2 ഉപയോഗിച്ച് ഫീൽഡ് ഇല്ലാതാക്കുക
sqlite_query ($db, "ടേബിൾ 1-ൽ നിന്ന് ഇല്ലാതാക്കുക എവിടെ ഐഡി=2;");
// നമുക്ക് ഡാറ്റ സാമ്പിൾ ചെയ്യാം
$query = sqlite_query ($db, "ടേബിൾ1ൽ നിന്ന് * തിരഞ്ഞെടുക്കുക;" );
// ലഭിച്ച എല്ലാ ഡാറ്റയും ഒരു ലൂപ്പിൽ ഞങ്ങൾ പ്രദർശിപ്പിക്കും
അതേസമയം ($array = sqlite_fetch_array ($query ))
{
echo($array [ "field1" ]. $array [ "field2" ]. " (എൻട്രി ഐഡി: " . $array [ "id" ]. ")
" );
}
?>

MySQL-ന് സമാനമായ ഒരു ഡാറ്റാബേസാണ് SQLite. SQLite ഉം മറ്റ് ഡാറ്റാബേസുകളും തമ്മിലുള്ള അടിസ്ഥാന വ്യത്യാസം മുഴുവൻ ഡാറ്റാബേസും ഒരു ഫയലാണ് എന്നതാണ്. MySQL-ൽ ഡാറ്റാബേസ് സെർവറിന്റെ വന്യതയിൽ എവിടെയെങ്കിലും സംഭരിക്കുകയും കൈമാറ്റത്തിന് ലഭ്യമല്ലെങ്കിൽ, SQLite-ൽ എല്ലാം വളരെ ലളിതമാണ്: ഒരു ഫയൽ - ഒരു ഡാറ്റാബേസ്.

തീർച്ചയായും, സെർവർ SQLite ഡ്രൈവറെ പിന്തുണയ്ക്കണം (മറ്റേതൊരു ഡാറ്റാബേസിനെയും പോലെ), എന്നാൽ ഒരു ചട്ടം പോലെ ഇപ്പോൾ ഇതിൽ പ്രശ്നങ്ങളൊന്നുമില്ല.

സാധാരണ പോലെ SQL ഉപയോഗിച്ച് ഡാറ്റാബേസുമായി പ്രവർത്തിക്കാനും പട്ടികകൾ, ഫീൽഡുകൾ മുതലായവ സൃഷ്ടിക്കാനും SQLite നിങ്ങളെ അനുവദിക്കുന്നു. പൊതുവേ, SQLite സാധാരണ MySQL-നേക്കാൾ ഒരു തരത്തിലും താഴ്ന്നതല്ലെന്ന് നമുക്ക് പറയാൻ കഴിയും, ഒരുപക്ഷേ, ഡാറ്റ അപ്‌ഡേറ്റ് ചെയ്യുന്നതിനുള്ള "ഹെവി" SQL ചോദ്യങ്ങളുള്ള മന്ദഗതിയിലുള്ള ജോലി ഒഴികെ (തിരുകുക, അപ്ഡേറ്റ് ചെയ്യുക). പക്ഷേ, വീണ്ടും, ഇത് ഉയർന്ന ലോഡ് സൈറ്റുകൾക്കുള്ളതാണ്.

SQLite-ന്റെ ഒരു വലിയ നേട്ടം പോർട്ടബിലിറ്റിയുടെ എളുപ്പമാണ്. ഒരു ഫയൽ പകർത്തുക - എന്താണ് എളുപ്പമുള്ളത്? MySQL പോലെയുള്ള ബാക്കപ്പുകളെ കുറിച്ച് നിങ്ങൾ വിഷമിക്കേണ്ടതില്ല, സെർവറിൽ പാസ്‌വേഡ് ഉള്ള ഒരു ഉപയോക്താവിനെ സൃഷ്ടിക്കേണ്ടതില്ല, നിങ്ങൾ ഡാറ്റാബേസ് തന്നെ സൃഷ്ടിക്കേണ്ടതില്ല. SQLite ഉപയോഗിച്ച് ഞങ്ങൾ അത് എടുത്ത് ഉപയോഗിക്കുക.

PHP-യിലെ ഒരു ഡാറ്റാബേസുമായി പ്രവർത്തിക്കാൻ, PDO - PHP ഡാറ്റാ ഒബ്ജക്റ്റുകൾ ഉപയോഗിക്കുന്നതാണ് നല്ലത് - ഇതാണ് വിളിക്കപ്പെടുന്നത്. വ്യത്യസ്ത ഡാറ്റാബേസുകളിൽ പ്രവർത്തിക്കുന്നതിന് ഒരൊറ്റ ഇന്റർഫേസ് വാഗ്ദാനം ചെയ്യുന്ന ഒരു അമൂർത്തീകരണം. സിദ്ധാന്തത്തിൽ, PDO ഉപയോഗിച്ച്, നിങ്ങൾക്ക് SQL അന്വേഷണങ്ങൾ മാറ്റാതെ തന്നെ ഏത് ഡാറ്റാബേസിലേക്കും മാറാം, ഉദാഹരണത്തിന് MySQL-ൽ നിന്ന് SQLite-ലേക്ക്. കണക്ഷൻ പാരാമീറ്ററുകൾ മാത്രം മാറുന്നു.

ഈ രീതിയിൽ SQLite PDO വഴി ബന്ധിപ്പിക്കും. ഇതിന് ഒന്നും ആവശ്യമില്ല, കാരണം PDO തന്നെ ഇതിനകം PHP-യിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, കൂടാതെ SQLite ഡ്രൈവർ സാധാരണയായി സെർവറുകളിലും ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.

പക്ഷേ, നിങ്ങൾ പ്രോഗ്രാമിംഗ് ആരംഭിക്കുന്നതിന് മുമ്പ്, നിങ്ങൾ അടിസ്ഥാനം തന്നെ സൃഷ്ടിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, MySQL-ന് phpMyAdmin ഉണ്ട്, അതിലൂടെ നിങ്ങൾക്ക് വിവിധ പ്രവർത്തനങ്ങൾ ചെയ്യാൻ കഴിയും. SQLite-ന് സമാനമായ സംഭവവികാസങ്ങളും ഉണ്ട്, എന്നാൽ FireFox ബ്രൗസറിലൂടെ നിങ്ങൾക്ക് ഇത് എങ്ങനെ ചെയ്യാമെന്ന് ഞാൻ കാണിച്ചുതരാം. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ ആഡ്-ഓൺ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്.

ഫയർഫോക്സ് പ്രധാന മെനുവിലേക്ക് ("ഹാംബർഗർ") ഈ ആഡ്-ഓൺ ചേർക്കുന്നതിന്, എഡിറ്റ് ക്ലിക്ക് ചെയ്ത് മെനുവിലേക്ക് ഐക്കൺ വലിച്ചിടുക.

ഇത് ഇൻസ്റ്റാൾ ചെയ്തു, നിങ്ങൾക്ക് ഇത് ഉപയോഗിക്കാം.

ആദ്യം, നമുക്ക് ഒരു പുതിയ ഡാറ്റാബേസ് ഉണ്ടാക്കാം. SQLite-ൽ, ഇത് .sqlite വിപുലീകരണമുള്ള ഒരു പ്രത്യേക ഫയലാണ്. ഈ ഫയൽ സംഭരിക്കുന്ന ഡയറക്ടറി വ്യക്തമാക്കാൻ SQLite മാനേജർ നിങ്ങളോട് ആവശ്യപ്പെടും. ഒരു പുതിയ ഡയറക്ടറി തിരഞ്ഞെടുക്കുക അല്ലെങ്കിൽ സൃഷ്ടിക്കുക. ഇത് ഇതുവരെ ഞങ്ങൾക്ക് ശരിക്കും പ്രശ്നമല്ല. തൽഫലമായി, ഒരു പുതിയ ഡാറ്റാബേസുള്ള ഒരു sqlite ഫയൽ സൃഷ്ടിക്കപ്പെടും.

ഈ ഫയൽ എവിടെയും നീക്കാൻ കഴിയും (പേരുമാറ്റുകയും), തുടർന്ന് മെനു കമാൻഡ് ഉപയോഗിച്ച് തുറക്കുകയും ചെയ്യാം ഡാറ്റാബേസുകൾ - ഡാറ്റാബേസ് ബന്ധിപ്പിക്കുക.

ഇപ്പോൾ നിങ്ങൾ ഡാറ്റാബേസിൽ ഒരു പട്ടിക (അല്ലെങ്കിൽ പട്ടികകൾ) സൃഷ്ടിക്കേണ്ടതുണ്ട്.

SQLite മാനേജർ യാന്ത്രികമായി സേവന പട്ടികകൾ സൃഷ്ടിക്കുന്നു sqlite_XXX. ഞങ്ങൾ അവരെ തൊടുന്നില്ല, അവർ നമ്മെ ശല്യപ്പെടുത്തുന്നില്ല.

ഘടനാപരമായ വിവരങ്ങൾ സംഭരിച്ചിരിക്കുന്ന സ്ഥലമാണ് ഡാറ്റാബേസിലെ പട്ടിക. പട്ടികയിൽ നിർദ്ദിഷ്ട ഗുണങ്ങളുള്ള ഒരു കൂട്ടം ഫീൽഡുകൾ ഉണ്ടായിരിക്കണം. ഉദാഹരണത്തിന്, ഫീൽഡ് പൂർണ്ണസംഖ്യകളാകാം - പൂർണ്ണസംഖ്യകൾക്ക്, അല്ലെങ്കിൽ ടെക്സ്റ്റ് - ടെക്സ്റ്റിനായി. ഫീൽഡുകളുടെ എണ്ണം ഏകപക്ഷീയമാകാം, അത് വെബ്‌മാസ്റ്ററുടെ ചുമതലയാൽ മാത്രം നിർണ്ണയിക്കപ്പെടുന്നു.

ഉദാഹരണത്തിന്, നമുക്ക് ഫീൽഡുകളുള്ള ഒരു പട്ടിക പേജുകൾ ഉണ്ട്

  • ഐഡി- അദ്വിതീയ നമ്പർ (യാന്ത്രിക വർദ്ധനവ്)
  • സ്ലഗ്- ലിങ്ക്
  • വാചകം- സ്വതന്ത്ര വാചകം
  • ഹിറ്റുകൾ- കാഴ്ചകളുടെ എണ്ണം

പട്ടിക സൃഷ്ടിച്ച ശേഷം, "ഈ ഒബ്ജക്റ്റ് സൃഷ്ടിച്ച SQL പ്രസ്താവന" ബ്ലോക്ക് ശ്രദ്ധിക്കുക. ഒരു പട്ടിക സൃഷ്ടിക്കാൻ ഉപയോഗിക്കാവുന്ന ഒരു SQL അന്വേഷണം ഇതിൽ അടങ്ങിയിരിക്കും. PHP വഴി നിങ്ങൾക്ക് ഡാറ്റാബേസിൽ ഒരു പട്ടിക സൃഷ്ടിക്കണമെങ്കിൽ ഇത് ഉപയോഗപ്രദമാകും.

ടേബിൾ എഡിറ്റ് ചെയ്യാൻ വ്യൂ ആൻഡ് സെർച്ച് ടാബ് നിങ്ങളെ അനുവദിക്കുന്നു. ഉദാഹരണത്തിന്, ഫീൽഡിൽ രണ്ട് വരികൾ സൃഷ്ടിക്കാം സ്ലഗ്വീട്ടിൽ ആയിരിക്കും ബന്ധപ്പെടുക . ഇവ രണ്ട് പേജുകളായിരിക്കും: വീട്ഒപ്പം വെബ്സൈറ്റ്/സമ്പർക്കം.

ഫീൽഡ് ഹിറ്റുകൾഒരു പേജ് വ്യൂ കൗണ്ടർ അടങ്ങിയിരിക്കും. വാചകം എന്തും ആകാം.

അത്രയേയുള്ളൂ, അടിസ്ഥാനം തയ്യാറാണ്, ഇപ്പോൾ നിങ്ങൾക്ക് അത് ഉപയോഗിക്കാം.

നമുക്ക് ചുമതല സജ്ജമാക്കാം. ഒരു ചെറിയ ലിങ്ക് (സ്ലഗ്) വഴി അനുബന്ധ വാചകവും കാഴ്‌ചകളുടെ എണ്ണവും പ്രദർശിപ്പിക്കുന്ന ഒരു ലളിതമായ വെബ്‌സൈറ്റ് നമുക്ക് സ്വന്തമാക്കാം.

ഞങ്ങൾ ഇത് ഒരു പ്രാദേശിക സെർവറിൽ ചെയ്യുകയാണെങ്കിൽ, സൈറ്റ് ഡയറക്ടറിയിൽ ആയിരിക്കട്ടെ sqlite. അതിൽ ഒരു ഉപഡയറക്‌ടറിയുണ്ട് db, ഞങ്ങൾ എവിടെ പകർത്തും pages.sqlite.

മുമ്പത്തെ ലേഖനത്തിൽ വിവരിച്ചതുപോലെ നമുക്ക് റൂട്ടിംഗ് നടത്താം. File.htaccess

AddDefaultCharset UTF-8 ഓപ്ഷനുകൾ -ഇൻഡക്സുകൾ RewriteEngine on RewriteBase /sqlite/ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule (.*) /sqlite/index.php?$1

IN index.phpറൂട്ടിംഗ് തന്നെ ഒരു വരിയിൽ വിവരിക്കും:

$പേജ് = ($p = കീ($_GET)) ? $p: "വീട്";

  • അടിസ്ഥാനം ബന്ധിപ്പിക്കുക
  • ഞങ്ങൾ അതിൽ $page വഴി തിരഞ്ഞെടുക്കുന്നു
  • ലഭിച്ച ഡാറ്റ പ്രദർശിപ്പിക്കുക
PHP കോഡ് സങ്കീർണ്ണമാക്കാതിരിക്കാൻ ഞാൻ മനഃപൂർവ്വം അൽഗോരിതം ലളിതമാക്കുന്നു.

ഡാറ്റാബേസുമായി പ്രവർത്തിക്കുന്നതിന് രണ്ട് ഓപ്ഷനുകൾ ഉണ്ട്. ആദ്യത്തേത് നേറ്റീവ് PHP കോഡാണ്. ഇത് വളരെ സങ്കീർണ്ണമല്ല, പക്ഷേ പരാമീറ്ററുകളുടെ സമൃദ്ധി അൽപ്പം അരോചകമാണ്. അതിനാൽ, രണ്ടാമത്തെ ഓപ്ഷൻ അധിക റാപ്പർ ലൈബ്രറികൾ ഉപയോഗിക്കുക എന്നതാണ്. അവരോടൊപ്പം, കോഡ് കൂടുതൽ സംക്ഷിപ്തമാകും.

ആദ്യ പതിപ്പിൽ ഞാൻ index.php കോഡ് നൽകും:

setAtribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $sql = "തിരഞ്ഞെടുക്കുക * പേജുകളിൽ നിന്ന് എവിടെ സ്ലഗ്=:പേജ് ലിമിറ്റ് 1"; $sth = $pdo->തയ്യാറുക($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->എക്‌സിക്യൂട്ട്(അറേ(":പേജ്" => $പേജ്)); $ വരികൾ = $sth->fetchAll(); print_r ($ വരികൾ); // ഔട്ട്‌പുട്ട് ഡാറ്റ ഇവിടെ ) ക്യാച്ച് (ഒഴിവാക്കൽ $e) (എക്കോ $e->getMessage(); ) # ഫയലിന്റെ അവസാനം

രണ്ടാമത്തെ ഓപ്ഷനായി, ഞാൻ labaka.ru എന്ന സൈറ്റിൽ നിന്ന് ഒരു php ലൈബ്രറി ഉപയോഗിച്ചു, അത് ഞാൻ ഒരു ഉപഡയറക്‌ടറിയിൽ സ്ഥാപിച്ചു. ലിബ്.

index.php കോഡ്:

ഈ ഉദാഹരണം വ്യത്യസ്‌ത വിലാസങ്ങൾക്കായി വ്യത്യസ്‌ത ടെക്‌സ്‌റ്റ് പ്രദർശിപ്പിക്കുകയും വ്യൂസ് കൗണ്ടർ പ്രവർത്തിക്കുകയും ചെയ്യും. നിങ്ങൾക്ക് ഒരു പുതിയ പേജ് ചേർക്കണമെങ്കിൽ, നിങ്ങൾ അത് ഡാറ്റാബേസിൽ സൃഷ്ടിക്കേണ്ടതുണ്ട്. സൗകര്യത്തിനായി, SQLite മാനേജറിൽ നിങ്ങൾക്ക് സൈറ്റ് ഡയറക്ടറിയിൽ നിന്ന് നേരിട്ട് ഡാറ്റാബേസ് ബന്ധിപ്പിക്കാൻ കഴിയും.

ഇവിടെ ശ്രദ്ധിക്കേണ്ട രണ്ട് പ്രധാന പോയിന്റുകൾ ഉണ്ട്.

ഒന്നാമതായി, PDO യുടെ എല്ലാ ജോലികളും ഒരു ശ്രമത്തിൽ ഉൾക്കൊള്ളണം..catch block. പിശക് സന്ദേശങ്ങൾ ഈ രീതിയിൽ പിടിക്കപ്പെടുന്നു.

sql ചോദ്യത്തിലേക്ക് അയച്ച ഡാറ്റ മൂല്യനിർണ്ണയത്തിലൂടെ കടന്നുപോകണം. PDO-യിൽ, ഡാറ്റ തയ്യാറാക്കൽ ഉപയോഗിക്കുമ്പോൾ (PDO::prepare), പാരാമീറ്റർ എസ്കേപ്പിംഗ് നിർബന്ധിതമാകുന്നു. സാധ്യമായ SQL കുത്തിവയ്പ്പുകൾക്കെതിരെ പരിരക്ഷിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.

ഒരു SQLite ഡാറ്റാബേസ് കണക്റ്റുചെയ്യുമ്പോൾ, ഡാറ്റാബേസ് ഫയൽ ഇല്ലെങ്കിൽ, അത് യാന്ത്രികമായി സൃഷ്ടിക്കപ്പെടും. കണക്റ്റുചെയ്‌ത ഉടൻ തന്നെ ഒരു ഡാറ്റാബേസ് സൃഷ്‌ടിക്കുന്നതിനും ആദ്യത്തെ sql അന്വേഷണം (ഞാൻ മുകളിൽ എഴുതിയത്) ഉപയോഗിച്ച് ആവശ്യമായ പട്ടികകൾ സൃഷ്‌ടിക്കുന്നതിനുമുള്ള അടിസ്ഥാനമാണിത്.

SQLite നെ കുറിച്ച് ഒരു കുറിപ്പ് കൂടി. ഡാറ്റാബേസ് ഒരു ഫയലായതിനാൽ, അത് ഒരു URL-ൽ നിന്ന് നേരിട്ട് ബ്രൗസറിലൂടെ ഡൗൺലോഡ് ചെയ്യാം. അതിനാൽ, എല്ലാ ലൈനിൽ നിന്നും Deny ഉപയോഗിച്ച് .htaccess വഴി SQLite ഫയലുകൾ ഉപയോഗിച്ച് ഡയറക്ടറി സംരക്ഷിക്കുന്നതാണ് നല്ലത്. അല്ലെങ്കിൽ പ്രധാന www ഡയറക്‌ടറിയെക്കാൾ ഉയരത്തിൽ സ്ഥാപിക്കുക.

ഒരു ചെറിയ ഡാറ്റാബേസ് ആവശ്യമുള്ള ചെറിയ ജോലികൾക്ക് SQLite ഉപയോഗപ്രദമാകും: കൗണ്ടറുകൾ, വോട്ടിംഗ്, പേജ് മെറ്റാഡാറ്റ മുതലായവ.

നിങ്ങൾക്ക് ഈ ലേഖനം റഫർ ചെയ്യാം.

കഴിഞ്ഞ ദിവസം എനിക്ക് വേഗത്തിൽ ഡാറ്റ സൃഷ്ടിക്കുന്നതിനും അത് ഒരു SQLite ഡാറ്റാബേസിൽ സംരക്ഷിക്കുന്നതിനുമുള്ള ഒരു സിസ്റ്റം നിർമ്മിക്കേണ്ടതുണ്ട്. മാത്രമല്ല, എല്ലാം വളരെ വേഗത്തിൽ പ്രവർത്തിക്കേണ്ടതായിരുന്നു. വഴിയിൽ, MySQL-ലേക്ക് ഡാറ്റാബേസ് ചേർക്കേണ്ടത് ആവശ്യമാണ്. MySQL നെ സംബന്ധിച്ചിടത്തോളം, ഡാറ്റ ചേർക്കുന്നതിനുള്ള വിപുലമായ ടൂളുകൾ ഉണ്ട്:

  1. ലളിതമായ INSERT
  2. ചേർക്കുകയും നിരവധി ചേർത്ത മൂല്യങ്ങളും (ബൾക്ക് ഇൻസേർട്ട്)
  3. CSV ഫയലുകൾ വഴി ചേർക്കുന്നു

ഏറ്റവും വേഗതയേറിയത്, ഒരു സംശയവുമില്ലാതെ, ഓപ്ഷൻ നമ്പർ 3 ആയിരുന്നു. വാസ്തവത്തിൽ, ഇത് ഇതിനകം സിസ്റ്റത്തിൽ ഉപയോഗിച്ചിരുന്നു. വഴിയിൽ, നിമിഷങ്ങൾക്കുള്ളിൽ ഡാറ്റാബേസിലേക്ക് നിരവധി ലക്ഷം/ലക്ഷം റെക്കോർഡുകൾ വരെ ചേർക്കാൻ ഈ ഓപ്ഷൻ നിങ്ങളെ അനുവദിക്കുന്നു. തീർച്ചയായും, സെർവർ ഹാർഡ്‌വെയറും ഇവിടെ ഒരു വലിയ പങ്ക് വഹിക്കുന്നു, എന്നാൽ ഇത് ഇപ്പോൾ പരിഗണിക്കില്ല.

നമുക്കെല്ലാവർക്കും നന്നായി അറിയാവുന്നതും ഒന്നിലധികം തവണ കണ്ടിട്ടുള്ളതുമായതിനാൽ, ഈ സിസ്റ്റവുമായി ഇടപഴകുന്നതിനും അധിക നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുന്നതിനും കൂടുതൽ കഴിവുകൾക്ക് കൂടുതൽ ഉറവിടങ്ങളും കൂടാതെ/അല്ലെങ്കിൽ അധിക സോഫ്റ്റ്‌വെയറും ആവശ്യമാണ്.

MySQL-ൽ നിന്ന് വ്യത്യസ്തമായി, SQLite വളരെ ഭാരം കുറഞ്ഞതും പ്രവർത്തിക്കാൻ ഒരു ലൈബ്രറി മാത്രമേ ആവശ്യമുള്ളൂ. ഡാറ്റാബേസ് ഫയലുകൾ എവിടെയും സ്ഥാപിക്കുകയും കൈമാറുകയും ചെയ്യാം. പക്ഷേ, ഡാറ്റാബേസിലേക്ക് ചേർക്കുന്നത് ഒരു ലളിതമായ INSERT വഴി മാത്രമേ ചെയ്യാൻ കഴിയൂ. ഇതിനർത്ഥം "ബൾക്ക്" ഇൻസേർട്ട് വഴി ചേർക്കുന്നത് പിന്തുണയ്ക്കുന്നില്ല എന്നാണ്. കൂടാതെ, പട്ടികയിൽ കുറഞ്ഞത് ഒരു കീ എങ്കിലും ഉണ്ടെങ്കിൽ (കുറഞ്ഞത് അത് ഒരു പ്രാഥമിക കീ ആയിരിക്കും), ഒരു റെക്കോർഡ് ചേർക്കുന്നത് സൂചികകൾ പുനർനിർമ്മിക്കുന്നതിനെ സൂചിപ്പിക്കുന്നു. ചുരുങ്ങിയ സമയത്തിനുള്ളിൽ നിങ്ങൾ ആയിരക്കണക്കിന് റെക്കോർഡുകൾ ചേർക്കേണ്ടതുണ്ടെന്ന് ഇപ്പോൾ സങ്കൽപ്പിക്കുക. SQLite എത്ര ഭാരം കുറഞ്ഞതും വേഗതയുള്ളതുമാണെങ്കിലും, ഇതിന് വളരെയധികം സമയമെടുക്കും.

ഒരു അപ്രതീക്ഷിത പരിഹാരം കണ്ടെത്തി (കുറഞ്ഞത് എന്നെ സംബന്ധിച്ചിടത്തോളം - ഈ ഡാറ്റാബേസിന്റെ എല്ലാ സാധ്യതകളും ഞാൻ പഠിച്ചിട്ടില്ല) - ഇടപാടുകളുടെ ഉപയോഗം. ഇത് വേഗതയിൽ 10-100 മടങ്ങ് വർദ്ധനവ് നൽകി. ഒരു ഇടപാട് സംരക്ഷിക്കുന്നത്/വിജയകരമായി പൂർത്തിയാക്കുന്നത് വേഗത്തിലാണ് - വാസ്തവത്തിൽ, ഡാറ്റ ഡാറ്റാബേസ് ഫയലിലേക്ക് വലിച്ചെറിയപ്പെടുന്നു.

വിവരിച്ചത് നല്ലതായിരുന്നു, എന്നാൽ പൂർണ്ണമായ സെറ്റിന് ഈ ഡാറ്റ വ്യത്യസ്ത sqlite ഫയലുകളിലേക്ക് എഴുതേണ്ടത് ആവശ്യമാണ്. ഇതിനായി, ലളിതവും തെളിയിക്കപ്പെട്ടതുമായ ഒരു രീതി ഉപയോഗിച്ചു - നിരവധി ഡിസ്ക്രിപ്റ്ററുകളുടെ ഉപയോഗം. ഭാഗ്യവശാൽ, കുറച്ച് ഫയലുകൾ മാത്രമേ ഉണ്ടായിരുന്നുള്ളൂ. ഈ കൃത്രിമത്വങ്ങൾക്കെല്ലാം ശേഷം, 5 മിനിറ്റിനുള്ളിൽ പ്രവർത്തിക്കുകയും ഓരോന്നിലും M ലൈനുകളുള്ള N ഫയലുകളിലേക്ക് ഡാറ്റ എഴുതുകയും ചെയ്യുന്ന ഒരു സ്ക്രിപ്റ്റ് ഞങ്ങളുടെ പക്കലുണ്ട്. ഞാൻ ഉടൻ തന്നെ ഒരു റിസർവേഷൻ നടത്തട്ടെ - ഈ സാഹചര്യത്തിൽ ഓരോ ഡാറ്റാബേസ് ഫയലിലും ഒരു പട്ടികയുണ്ട്.

ഇപ്പോൾ കുറച്ച് നമ്പറുകൾ:

ടെസ്റ്റ് ഡാറ്റാബേസുകളിൽ, ഓരോ ഫയലിനും ഒരു ഇടപാട് തുറക്കുകയും തുടർന്ന് അടച്ച് സേവ് ചെയ്യുകയും ചെയ്തു. പ്രധാന കുറിപ്പ്: ഓരോ SQLite-നും ഒരു ഫയലിന് ഒരു ഹാൻഡിൽ മാത്രമേ അനുവദിക്കാൻ കഴിയൂ. രണ്ടാമത്തെ ഹാൻഡിൽ ഉപയോഗിച്ച് നിങ്ങൾ ഡാറ്റാബേസുമായി സംവദിക്കാൻ ശ്രമിക്കുകയാണെങ്കിൽ, ഒരു പിശക് എറിയപ്പെടും.

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ചുരുങ്ങിയ സമയത്തിനുള്ളിൽ വലിയ അളവിൽ ഡാറ്റ ചേർക്കാൻ ഈ സമീപനം നിങ്ങളെ അനുവദിക്കുന്നു.

SQLite-ലേക്ക് ഒരു ഡാറ്റാബേസ് ചേർക്കാനുള്ള ഏക മാർഗം ഒരു ലളിതമായ INSERT ആണെന്ന് ഞാൻ പറഞ്ഞപ്പോൾ, ഇത് SQL ഭാഷ ഉപയോഗിക്കുന്ന ഒരേയൊരു ഓപ്ഷൻ ആണെന്ന് ഞാൻ സൂചിപ്പിച്ചില്ല എന്നത് എടുത്തുപറയേണ്ടതാണ്.

മറ്റൊരു ഓപ്ഷൻ ഉണ്ട് - MySQL-ൽ "ലോഡ് ഡാറ്റ ..." എന്നതിന്റെ അനലോഗ് - CSV ഫയലുകളിൽ നിന്ന് ഡാറ്റ ഇറക്കുമതി ചെയ്യുന്നു. SQLite പരിതസ്ഥിതിയിൽ നിന്ന് നേരിട്ട് ഡാറ്റ ചേർക്കാൻ ഈ ഓപ്ഷൻ മാത്രമേ നിങ്ങളെ അനുവദിക്കൂ. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, നിങ്ങൾ ആദ്യം ഡാറ്റാബേസ് തുറക്കേണ്ടതുണ്ട് - ഉദാഹരണത്തിന്, കൺസോളിൽ നിന്ന് വിളിക്കുക.

path_to_csv_file പട്ടിക ഇറക്കുമതി ചെയ്യുക

ഡിഫോൾട്ട് ഡിലിമിറ്റർ "|" പ്രതീകമാണ്.

സെപ്പറേറ്റർ മാറ്റുന്നതിന്, നിങ്ങൾ കമാൻഡ് വിളിക്കേണ്ടതുണ്ട്:

സെപ്പറേറ്റർ

ഒരു സെപ്പറേറ്റർ എന്ന നിലയിൽ, നിങ്ങൾ ഒരു കോളം സെപ്പറേറ്റർ വ്യക്തമാക്കേണ്ടതുണ്ട്, ഉദാഹരണത്തിന്, "".

ഈ കേസിൽ കൂട്ടിച്ചേർക്കലിന്റെ വേഗത മുമ്പ് വിവരിച്ച രീതിയുടെ വേഗതയെ 100 മടങ്ങ് കവിയുന്നു. എന്തുകൊണ്ടാണ് ഈ രീതി ഉപയോഗിക്കാത്തത്? കാര്യം ഇതാണ്: ഒരു സെർവർ-സൈഡ് പ്രോഗ്രാമിംഗ് ഭാഷയ്ക്ക് (ഈ സാഹചര്യത്തിൽ PHP) sqlite ലൈബ്രറിയുടെ ഒരു പതിപ്പ് ഉപയോഗിക്കാം, മറ്റൊരു പതിപ്പ് സിസ്റ്റത്തിൽ ഇൻസ്റ്റാൾ ചെയ്തേക്കാം (അല്ലെങ്കിൽ ഇല്ലായിരിക്കാം). sqlite ഇടപെടലിന്റെ ഈ രണ്ട് രീതികളും സംയോജിപ്പിക്കുമ്പോൾ, ഒരു ഓപ്ഷനിൽ ഡാറ്റാബേസ് ലഭ്യമല്ലായിരിക്കാം - അത് വായിക്കാൻ ശ്രമിക്കുമ്പോൾ ഒരു പിശക് സംഭവിക്കും.

SQL-നൊപ്പം ജോലി നൽകുന്ന സി ഭാഷയിൽ എഴുതിയ ഒരു ലൈബ്രറിയാണിത്. ഈ ടൂൾ റിലേഷണൽ ഡാറ്റാബേസ് മാനേജ്മെന്റ് സിസ്റ്റങ്ങളുടേതാണ്. മിക്ക SQL ഡാറ്റാബേസുകളും ഒരു ക്ലയന്റ്/സെർവർ അടിസ്ഥാനത്തിൽ പ്രവർത്തിക്കുന്നു. ഉദാഹരണത്തിന് MySQL എടുക്കാം. പ്രവർത്തന സമയത്ത്, MySQL സെർവറിൽ നിന്ന് ഡാറ്റ എടുക്കുകയും അഭ്യർത്ഥനയ്ക്കുള്ള പ്രതികരണമായി അയയ്ക്കുകയും ചെയ്യുന്നു. SQLite ഉപയോഗിക്കുന്ന കാര്യത്തിൽ, ഡാറ്റ ഡിസ്കിൽ നിന്ന് നേരിട്ട് എടുക്കും, അതായത്. സെർവറുമായി ബന്ധപ്പെടേണ്ട ആവശ്യമില്ല.

ഇൻസ്റ്റലേഷൻ

കമാൻഡ് ലൈൻ ഇന്റർഫേസിലൂടെ ഞങ്ങൾ ഡാറ്റാബേസുമായി സംവദിക്കും sqlite3ലിനക്സിൽ (CLI). കൂടെ ജോലി sqlite3 MAC OS, Windows എന്നിവയിലെ CLI സമാന രീതിയിലാണ് നടപ്പിലാക്കുന്നത്, എന്നിരുന്നാലും, നിങ്ങളുടെ കമ്പ്യൂട്ടറിനെ അനാവശ്യമായ സോഫ്റ്റ്‌വെയർ ഉപയോഗിച്ച് അലങ്കോലപ്പെടുത്താതിരിക്കാൻ വെർച്വൽ മെഷീൻ ഇൻസ്റ്റാൾ ചെയ്യാൻ 5 മിനിറ്റ് ചെലവഴിക്കാൻ ഞാൻ ശുപാർശ ചെയ്യുന്നു.

Linux-ൽ sqlite3 ഇൻസ്റ്റാൾ ചെയ്യാൻ, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

sudo apt-get install sqlite3 libsqlite3-dev

തൽഫലമായി, നിങ്ങളുടെ മെഷീന് ഉണ്ടാകും sqlite3. മറ്റ് OS-ൽ ഈ ഉപകരണം ഇൻസ്റ്റാൾ ചെയ്യാൻ, നിർദ്ദേശങ്ങൾ പാലിക്കുക. Sqlite ആരംഭിക്കുന്നതിന്, കൺസോളിൽ sqlite3 കമാൻഡ് പ്രവർത്തിപ്പിക്കുക. ഫലം ഇതുപോലെയായിരിക്കണം:

രണ്ടാമത്തെ വരിയിൽ സഹായം ലഭിക്കുന്നതിന് നിങ്ങൾ കമാൻഡ് പ്രവർത്തിപ്പിക്കേണ്ട ഒരു സൂചന അടങ്ങിയിരിക്കുന്നു.help . അത് ചെയ്യാം. അതിന്റെ ഫലമായി നമ്മൾ കാണും മെറ്റാ കമാൻഡുകൾഅവരുടെ വിവരണവും.

മെറ്റാ കമാൻഡുകൾ

മെറ്റാ കമാൻഡുകൾ- പട്ടികകളും മറ്റ് അഡ്മിനിസ്ട്രേറ്റീവ് പ്രവർത്തനങ്ങളും സൃഷ്ടിക്കുന്നതിനായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. അവയെല്ലാം അവസാനിക്കുന്നു ഡോട്ട്. ഉപയോഗപ്രദമായേക്കാവുന്ന കമാൻഡുകളുടെ പട്ടികയിലൂടെ നമുക്ക് പോകാം:

സ്റ്റാൻഡേർഡ് കമാൻഡുകൾ

ഇനി നമുക്ക് പട്ടികയിലൂടെ പോകാം സ്റ്റാൻഡേർഡ് കമാൻഡുകൾ sqlite3, ഡാറ്റാബേസുമായി സംവദിക്കാൻ രൂപകൽപ്പന ചെയ്തിട്ടുള്ളതാണ്. സ്റ്റാൻഡേർഡ് കമാൻഡുകൾമൂന്ന് ഗ്രൂപ്പുകളായി തിരിക്കാം:

  • ഡാറ്റ വിവരണം ഭാഷ DDL: ഒരു പട്ടിക സൃഷ്ടിക്കുന്നതിനും, ഡാറ്റാബേസുകൾ, ടേബിളുകൾ എന്നിവയും മറ്റും പരിഷ്ക്കരിക്കാനും ഇല്ലാതാക്കാനുമുള്ള കമാൻഡുകൾ.
  • ഡാറ്റ മാനേജ്മെന്റ് ഭാഷ DML: ഡാറ്റ കൈകാര്യം ചെയ്യാൻ ഉപയോക്താവിനെ അനുവദിക്കുക (ചേർക്കുക/മാറ്റുക/ഇല്ലാതാക്കുക).
  • DQL അന്വേഷണ ഭാഷ: ഡാറ്റ വീണ്ടെടുക്കൽ അനുവദിക്കുന്നു.
  • കുറിപ്പ്: SQLite മറ്റ് പല കമാൻഡുകളെയും പിന്തുണയ്ക്കുന്നു, അവയുടെ ഒരു ലിസ്റ്റ് കണ്ടെത്താനാകും. ഈ പാഠം തുടക്കക്കാർക്കായി ഉദ്ദേശിച്ചിട്ടുള്ളതിനാൽ, ലിസ്റ്റുചെയ്തിരിക്കുന്ന കമാൻഡുകളിലേക്ക് ഞങ്ങൾ സ്വയം പരിമിതപ്പെടുത്തും.

    SQLite ഡാറ്റാബേസ് ഫയലുകളാണ് ക്രോസ്-പ്ലാറ്റ്ഫോം. അവ വിവിധ തരം ഉപകരണങ്ങളിൽ സ്ഥാപിക്കാവുന്നതാണ്.

    • ഇമെയിൽ
    • ഒരു അഭിപ്രായം

    ഈ എല്ലാ ഫീൽഡുകളിലും, സൈറ്റ് വിലാസം മാത്രമേ ശൂന്യമാകൂ. അഭിപ്രായങ്ങൾ അക്കമിടുന്നതിനുള്ള ഒരു കോളം കൂടി അവതരിപ്പിക്കാം. നമുക്ക് അതിനെ post_id എന്ന് വിളിക്കാം.

    ഇനി ഓരോ കോളങ്ങൾക്കുമുള്ള ഡാറ്റ തരങ്ങൾ നിർവചിക്കാം:

    ആട്രിബ്യൂട്ട് ഡാറ്റ തരം
    പോസ്റ്റ്_ഐഡി സംഖ്യ
    പേര് വാചകം
    ഇമെയിൽ വാചകം
    website_url വാചകം
    അഭിപ്രായം വാചകം

    SQLite3-ൽ പിന്തുണയ്ക്കുന്ന എല്ലാ ഡാറ്റ തരങ്ങളും നിങ്ങൾക്ക് കണ്ടെത്താനാകും.

    SQLite3-ൽ, ഒരു നിരയിലേക്ക് ചേർത്ത ഡാറ്റ നിർദ്ദിഷ്ട തരത്തിൽ നിന്ന് വ്യത്യസ്തമാകാമെന്നതും ശ്രദ്ധിക്കേണ്ടതാണ്. ഇത് MySQL-ൽ പ്രവർത്തിക്കില്ല.

    ഇനി നമുക്ക് ഡാറ്റാബേസ് ഉണ്ടാക്കാം. നിങ്ങൾ ഇപ്പോഴും sqlite3 ഇന്റർഫേസിൽ ആണെങ്കിൽ, പുറത്തുകടക്കാൻ കമാൻഡ്.quit ടൈപ്പ് ചെയ്യുക. ഇപ്പോൾ നൽകുക:

    sqlite3 comment_section.db

    തൽഫലമായി, നിലവിലെ ഡയറക്ടറിയിൽ നമുക്ക് ഒരു ഫയൽ ഉണ്ടാകും comment_section.db.

    കുറിപ്പ്: നിങ്ങൾ ഒരു ഫയലിന്റെ പേര് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, sqlite3 ഒരു താൽക്കാലിക ഡാറ്റാബേസ് സൃഷ്ടിക്കും.

    ഒരു മേശ ഉണ്ടാക്കുന്നു

    അഭിപ്രായങ്ങൾ സംഭരിക്കുന്നതിന് ഞങ്ങൾ ഒരു പട്ടിക സൃഷ്ടിക്കേണ്ടതുണ്ട്. അതിനെ കമന്റ് എന്ന് വിളിക്കാം. ഞങ്ങൾ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു:

    ടേബിൾ കമന്റുകൾ സൃഷ്‌ടിക്കുക (post_id INTEGER NULL പ്രൈമറി കീ ഓട്ടോഇൻക്രിമെന്റല്ല, പേര് വാചകം ശൂന്യമല്ല, ഇമെയിൽ വാചകം NULL അല്ല, website_url വാചകം NULL, കമന്റ് വാചകം NULL അല്ല);

    NOT NULL എന്നത് സെല്ലിൽ ഒരു അസാധുവായ മൂല്യം അടങ്ങിയിട്ടില്ലെന്ന് ഉറപ്പാക്കും. പ്രൈമറി കീയും ഓട്ടോഇൻക്രിമെന്റും ഫീൽഡിന്റെ കഴിവുകൾ വികസിപ്പിക്കുന്നു പോസ്റ്റ്_ഐഡി.

    പട്ടിക സൃഷ്ടിച്ചിട്ടുണ്ടോയെന്ന് പരിശോധിക്കാൻ, .tables മെറ്റാ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക. തൽഫലമായി, ഞങ്ങളുടെ അഭിപ്രായങ്ങളുടെ പട്ടിക ഞങ്ങൾ കാണുന്നു.

    കുറിപ്പ്: പട്ടികയുടെ ഘടന ലഭിക്കാൻ, .സ്കീമ കമന്റുകൾ ടൈപ്പ് ചെയ്യുക

    ഇപ്പോൾ നമുക്ക് പട്ടികയിലേക്ക് ഡാറ്റ നൽകാം.

    വരികൾ ചേർക്കുന്നു

    ഞങ്ങൾ ഇനിപ്പറയുന്ന എൻട്രി നടത്തേണ്ടതുണ്ടെന്ന് കരുതുക:

    പേര്: ശിവം മാംഗെയ്ൻ ഇമെയിൽ: [ഇമെയിൽ പരിരക്ഷിതം]വെബ്സൈറ്റ്: shivammg.blogspot.com അഭിപ്രായം: തുടക്കക്കാർക്കുള്ള മികച്ച ട്യൂട്ടോറിയൽ.

    തിരുകാൻ ഞങ്ങൾ കമാൻഡ് ഉപയോഗിക്കും തിരുകുക.

    അഭിപ്രായങ്ങളിൽ ചേർക്കുക (പേര്, ഇമെയിൽ, website_url, അഭിപ്രായം) മൂല്യങ്ങൾ ("ശിവം മാംഗെയ്ൻ", " [ഇമെയിൽ പരിരക്ഷിതം]", "shivammg.blogspot.com", "തുടക്കക്കാർക്കുള്ള മികച്ച ട്യൂട്ടോറിയൽ.");

    കാരണം post_id-ന് ഒരു മൂല്യം വ്യക്തമാക്കേണ്ട ആവശ്യമില്ല AUTOINCREMENT ക്രമീകരണത്തിന് നന്ദി, അത് സ്വയമേവ ജനറേറ്റുചെയ്യും.

    നിങ്ങളുടെ കൈ നിറയ്ക്കാൻ, നിങ്ങൾക്ക് കുറച്ച് വരികൾ കൂടി ചേർക്കാം.

    സാമ്പിൾ

    ഡാറ്റ നേടുന്നതിന് ഞങ്ങൾ കമാൻഡ് ഉപയോഗിക്കും തിരഞ്ഞെടുക്കുക.

    അഭിപ്രായങ്ങളിൽ നിന്ന് post_id, പേര്, ഇമെയിൽ, website_url, അഭിപ്രായം തിരഞ്ഞെടുക്കുക;

    സമാന അഭ്യർത്ഥന ഇതുപോലെയാകാം:

    അഭിപ്രായങ്ങളിൽ നിന്ന് * തിരഞ്ഞെടുക്കുക;

    തൽഫലമായി, എല്ലാ വരികളും പട്ടികയിൽ നിന്ന് വേർതിരിച്ചെടുക്കും. കോളം ഡിലിമിറ്റേഷൻ കൂടാതെ തലക്കെട്ടില്ലാതെ ഫലം ദൃശ്യമാകാം. ഇത് പരിഹരിക്കാൻ ഞങ്ങൾ ചെയ്യുന്നു:

    തലക്കെട്ട് പ്രദർശിപ്പിക്കുന്നതിന്, .ഹെഡറുകൾ ഓൺ എന്ന് നൽകുക.

    നിരകൾ പ്രദർശിപ്പിക്കുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക .mode കോളം .

    ഞങ്ങൾ നടപ്പിലാക്കുന്നു തിരഞ്ഞെടുക്കുകവീണ്ടും അഭ്യർത്ഥിക്കുന്നു.

    കുറിപ്പ്: .mode മെറ്റാ കമാൻഡ് ഉപയോഗിച്ച് ഡിസ്പ്ലേ തരം മാറ്റാവുന്നതാണ്.

    അപ്ഡേറ്റ് ചെയ്യുക

    ഫീൽഡ് എന്ന് നമുക്ക് അനുമാനിക്കാം ഇമെയിൽ'ശിവം മാംഗെയ്ൻ' എന്ന ഉപയോക്താവിന് ' എന്നാക്കി മാറ്റേണ്ടതുണ്ട് [ഇമെയിൽ പരിരക്ഷിതം]’. ഞങ്ങൾ ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നു:

    തൽഫലമായി, പ്രവേശനം മാറ്റപ്പെടും.

    കുറിപ്പ്: നിര മൂല്യം പേര്അദ്വിതീയമായിരിക്കില്ല, അതിനാൽ ഒന്നിലധികം വരികൾ കമാൻഡ് ബാധിച്ചേക്കാം. മൂല്യമുള്ള എല്ലാ ഉപയോക്താക്കൾക്കും പേര്= ‘ശിവം മാംഗൈൻ’, വയൽ ഇമെയിൽ' ആയി മാറ്റും [ഇമെയിൽ പരിരക്ഷിതം]’. ഒരു നിർദ്ദിഷ്ട ലൈൻ മാറ്റാൻ, നിങ്ങൾ അത് ഫീൽഡ് ഉപയോഗിച്ച് ട്രാക്ക് ചെയ്യേണ്ടതുണ്ട് പോസ്റ്റ്_ഐഡി. മൂല്യത്തിന്റെ പ്രത്യേകത ഉറപ്പാക്കുന്ന പ്രൈമറി കീ ആയി ഞങ്ങൾ അതിനെ നിർവചിച്ചു.