ПредишенСледващото

Напоследък, може да сте чували за ново разширение за PHP: SQLite. Има много причини, поради които SQLite може да изглежда най-доброто постижение, тъй като научих как да се намали хляб. SQLite предлага Mighty SQL интерфейс към не-релационна база данни и създава елегантна алтернатива на тромавите взаимодействията с други бази данни, без да губят функционалност или скорост, както можеше да се очаква. Ще разгледаме в статията е невероятно разширение и, да се надяваме, ние ще бъдем в състояние да потвърди ползите от които, може да не са чували.

Какво е SQLite?

SQLite - това построена библиотека, която реализира много стандартен SQL 92. Нейната твърдят, че славата е като себе си и своя интерфейс (или по-скоро неговият двигател) действителната двигателя база данни в рамките на една библиотека, както и способността да съхранява всички данни в един файл. Отдавам позиция SQLite функционалност някъде между MySQL и PostgreSQL. Въпреки това, на практика, SQLite често е 2-3 пъти (или дори повече) по-бързо. Това е възможно благодарение на високо подредена вътрешна архитектура и елиминира нуждата от тип "клиент-сървър" връзки и "клиент-сървър".

Всичко това се съчетава в един пакет, само малко по-голям от размера на клиентската библиотека на MySQL, впечатляващо постижение за завършване на базата данни. С помощта на високо ефективна инфраструктура, SQLite може да работи в една малка част от паметта, предвиден за него, много по-малко, отколкото в други системи за бази данни. Това го прави много удобен инструмент за SQLite с възможността да се използва почти всеки задачи, възложени на базата данни прави.

Какво е използването на мен SQLite?

В допълнение към бързина и ефективност SQLite има редица други предимства, които го прави идеално решение за много приложения правят. Тъй като SQLite база данни по същество - обикновени файлове, няма никаква нужда от допълнителен административен персонал, за да прекарват времето създавайки комплексни разрешителни структури за защита на базите данни на потребителите. Всичко това се задават автоматично от правата за достъп в файловата система, тя включва също (в ограничаването на пространството), че не е необходимо, нито каквито и да било специални правила за проследяване на потребителското пространство на твърдия диск. Предимството за потребителите е, че е възможно да се създаде редица бази данни, които те желаят и имат пълен контрол над всички бази данни.

Фактът, че на база данни - един файл, което го прави лесно преносим. SQLite също елиминира необходимостта да се изпълнява допълнителни офис процеси (Демони), които биха могли да "изяждат" значително количество памет и други ресурси, дори и в случай на умерена употреба на базата данни.

Като най-новия ПБ експанзия, SQLite случи да бъде свободен от кода, за обратна съвместимост, за разлика от по-старите разширения, като например MySQL. са необходими за поддържане на функционалността на наследството на назад съображения за съвместимост. Той също така позволява на новото разширение да се използва най-новите разработки в PHP за постигане на най-високо ниво на производителност и функционалност. Разработчиците улесниха задачата на потребителя, създал разширяването на светлина за прехода към него от други системи за бази данни, оставяйки интерфейс, подобен на тези, които вече са приложени в PHP.

SQLite също поддържа гъвкав механизъм за трансфер на данни ресурси в процедурните интерфейси, което го прави еднакво лесно да се премине от MySQL, където ресурсът е предадена на последния, и PostgreSQL, където той премина първия.

SQLite също така разполага с мощен обектно-ориентиран интерфейс, който може да се използва за ефективно извличане на данни от базата данни, което премахва необходимостта от извършване на собствената си кожа за процесуална интерфейс. Както е показано в примера по-долу, обектно-ориентиран интерфейс също така ви позволява да се избегне предаването на всички ресурси купчина.

В PHP 5.0 инсталиране на SQLite има своя особеност, тъй като и двете разширение и библиотека са свързани помежду си, така че всичко, което трябва да направите - е да добавите -с-SQLite в съответствие конфигурация. Аз също бих препоръчал да инсталирате SQLite, но са само в случай, ако тя е около компилиран двоичен файл, който ще ви позволи да се отвори базата данни и да го управляват, без да използвате PHP. Това е много полезно за отстраняване на грешки и изпълнява различни команди едновременно, и също така е полезно за тестване на кода за запитване. В бъдеще, доста често ще откриете, че свързан SQLite библиотека малко "остарели", така че един куп си PHP с външна библиотека ще ви позволи да се възползват от най-новите корекции и SQLite нововъведения. Тя също така ще ви позволи в бъдеще да актуализирате SQLite без да се налага да компилирате PHP.

За да се сглоби разширението на SQLite като външен библиотека, просто използвайте -с-SQLite = / път / до / ИЪ /.

Трябва да спомена, че разширението на SQLite тече цялостна серия от тестове, както за обектно-ориентиран, и за процесуалните интерфейси. Тестван всяка една функция, а всеки поддържан от SQLite метод. Това е чудесен източник на примери не само за това как всеки метод и всяка функция SQLite, но и очакваната продукция, което ви позволява да видите крайния резултат на всяка операция.

Процедурно интерфейс за SQLite е почти същата като тази на MySQL и други разширения на бази данни. В по-голямата част на прехода към SQLite изискват промени само MySQL / PQ / и т.н. ... функция префикс за SQLite.

В действителност значителни различия между SQLite и други бази данни са разположени в двигателя. За разлика от други бази данни в SQLite нямат обвързваща за писане; всички данни се съхраняват като линия, завършваща NULL символ, който е по-добър от двоичното представяне на данните в колоните на специален вид. От съображения за съвместимост, все още поддържа спецификация тип SQLite в изграждането на Създаване на таблица, например, като INT, CHAR, флоат, текст и други подобни, но наистина не е в употреба. Вътре в основата, SQLite само прави разграничение между струни и данни целочислени при сортирането. Така че, ако няма да сортирате данните, което можете да направите, без специален тип поле при създаването на таблици в SQLite.

"Beztipovaya природата" SQLite прави сортиране и сравнение на данните, по някакъв начин по-бавно, защото SQLite всеки път ще трябва да се определи вида на данните и се прилага низ сортиране / механизъм сравнение или в цифров вид. SQL таблици често изискват автоматично се дава ключа за бърз достъп до клетките, което означава връщане линк към последната клетка добавена. За SQLite, този синтаксис най-меко казано, безполезни. За да създадете такава таблица, ще трябва да декларират областта като цяло число първичен ключ, който е по-удобно, отколкото посочване на специализиран вид или прехвърляне на допълнителни свойства, които показват, че областта е автоматично увеличение.

Както можете да очаквате, SQLite носи много нови функции, подобряване на ефективността и разширяване на функционалността. Една такава функция - способността да се извърши за сродни заявки, които включват изпълнение на множество заявки чрез функция на изпълнение на една заявка. Това намалява броя на функциите, включени PHP и по този начин увеличава скоростта на скрипта. Той също така ви позволява да групирате лесно блокове заявки в рамките на дадена сделка, подобряване на прилагането и в бъдеще. Тази опция може да бъде важен фактор при изпълнение на множество заявки да записва в базата данни. Все пак, има някои сочни функции, които не бива да се пренебрегва.

Ако някоя заявка в SQLite използва нещо директно, въведена от потребителя, трябва да се вземат допълнителни предпазни мерки, за да валидира като вход за предотвратяване на нежелани обаждания. За разлика от MySQL, когато това може да доведе до недоразумения с заявка за база данни и генерира грешка в SQLite това ще позволи на нападателя да изпълнят всяка заявка на вашия сървър, с възможни катастрофални последици. Ако добавяте запис чрез полето за търсене, бих искал да се върне на идентификатора на sqlite_last_insert_rowid () се справи добре с тази задача, но само се връща идентификатора на последния запис. От друга страна, когато се опитват да се определи колко клетки бяха променени с помощта sqlite_changes (), ще получим резултат, който съдържа общия брой на клетките променяни от всички заявката. Ако вашата заявка съдържа SELECT блок, уверете се, че това е първото искане, в противен случай си крайна проба няма да съдържа клетки, които се връщат за тази заявка.

В допълнение към новите си интериорни функции, SQLite предлага редица нови функции, които ще се опрости и ускори извличането на данни от базата данни.

Това ви позволява да изпълните заявката и извличане на данни, както и едно извикване на функция, унищожи всички допълнителна работа PHP на. Сама по себе си PHP скрипт е опростена чрез използването на само една функция, където в противен случай ще трябва да се използват няколко функции за извличане на данните в работния цикъл. В тези случаи, когато резултатът се връща само една колона може да се използва sqlite_single_query (), който веднага се връща низ или масив от редове, в зависимост от броя на клетките, от които се извлича информация.

Както е случаят с други функции, можете да го използвате, но не трябва да злоупотребяват с нея. В случай на пробата от всички поискване данни с едно минаване, което трябва да се помни, че всички резултати ще бъдат съхранени в паметта. Ако резултатния набор съдържа голямо количество данни, цената на разходите за памет със сигурност ще донесе на всички предимства, получени чрез намаляване на броя на извиквания на функции. Следователно, трябва да се запази използването на тези функции на случаите на вземането на малко количество данни.

Итераторите в SQLite

В PHP 5.0, има и друг начин за извличане на данни от заявка с итератори.

Първи резултати в течение работи по абсолютно същия начин, както на масива, простираща се в една линия през foreach (), с изключение, че в този момент не е нужно достъп до ключовете и стойността е масив, съдържащ данните в специфични клетки. Тъй като итератори не функционира, както и вътрешни указатели в двигателя, те се нуждаят от много по-малко ресурси, отколкото sqlite_fetch функции _ * (), и не изискват, че резултатите са кеширани в паметта. Крайният резултат е изключително бърз, по-лесен и достъпен метод за извличане на данни. Там не е ли някакви странични ефекти при използването на итератори в SQLite обекти, както и винаги, когато е необходимо, за да получите резултат под формата на множество редове, вие трябва да бъдете сигурни, да се има предвид за тази възможност.

SQLite също се отличава с редица допълнителни функции, които може да дойде по-удобно по време на работа с базата данни. Една от тези функции, sqlite_num_fields (), може да се използва за определяне на броя на колоните в специални резултати от взети проби. Алтернативно, ако ще да извлечете данните, просто използвайте брой () с първия резултат, който ще ви върне към един и същ номер. Ако възстановен като низ и цифрови бутони, ще трябва да се разделят на резултата, защото в резултат на масива ще бъде толкова много записи, тъй като има области, посочени в таблицата. Този номер може да бъде важно, ако скрипта ви е необходимо, за да се получи имената на полета в някои таблици. В този случай, можете да използвате sqlite_field_name () в един цикъл, за да получите достъп до тези данни, както е показано в примера по-долу.

Разбира се, това не е идеалният начин да получите имената на колоните в таблицата, само с факта, че тя ще се провали, когато на масата не съдържа една клетка, както и на факта, че това ще изисква да извличате данни, които не използвате , А много по-добро решение е да се използва sqlite_fetch_column_types () функция, която получава колоните заедно с техните видове в таблицата, независимо от това дали има данни или не.

В повечето случаи, от съображения за изпълнение или използването на паметта, няма да искате да използвате не-кеширани запитвания. Това може да доведе до по-малка загуба на функционалност, която може да бъде необходимо в някои случаи, за които не са кеширани заявките не винаги са най-добрият избор.

Да предположим, че искате да разберете действителния брой клетки са избрани по Вашето запитване. Искането без кеширане, което трябва да се вземе проба всяка една клетка, преди да можете да го определи. Кеширана заявки - по-лесен начин, който се състои в използването на sqlite_num_rows () функция, която е лесно да се получи тази информация от резултатите от извадката. Стаи за кеширани заявки също са ограничени в данните за преките примерни, което означава, че трябва да изберете данните на всички клетки с едно минаване. Кеширана заявките е че такова ограничение не, можете да използвате sqlite_seek (), за да компенсира клетка и извадка от данните си, или дори достъп до клетките в обратен ред, ако е необходимо.

Един от най-интересните характеристики е, че масата за SQLite разширение предвижда възможността за създаване на свои собствени функции се използват в рамките на SQL. Това е възможно, тъй като SQLite Библиотеката съдържа един, свързан с PHP, като интерфейс, както и самия базисен двигател. Използването sqlite_create_function (), можете да създадете функции, които по-късно могат да се прилагат резултатите от извадката или използвани по какъвто и състояние, при.

Възможността да се използва PHP за SQL позволява да се опрости сценария, което я прави достъпна за по-голяма аудитория от разработчици. Това ви позволява да използвате PHP като темплейт двигател, който ще поставите HTML кода в данните от базата данни. В много случаи това може да опрости кода толкова много, че той няма да има необходимост от използване на допълнителен темплейт двигател. В допълнение към опростяване на кода, той също така подобрява ефективността на програмите и за намаляването на цената на скрипта в паметта се дължи на факта, че там не е всяко действие, с данните, които се случват в потребителското пространство.

Не забравяйте, че ако се работи с данните, може да съдържа двоичен код, трябва да използвате sqlite_udf_decode_binary функция (), за да конвертирате от вътрешния кодиране, в които те се съхраняват в SQLite, преди да работите с тях. Ако направите това, вие трябва да се кодира на двоични данни посредством sqlite_udf_encode_binary (), за да бъдете сигурни, че данните няма да бъдат повредени по време на следващия достъп.

Сега, гледайки как работи SQLite, и това, което тя може да предложи, може да се обърне внимание на това за използване в настоящи или бъдещи техните приложения. Надявам се, че този преглед ви е дал някаква представа за функционалността на SQLite, и не е отстранена, който и да е от нещата, които сте чували за това добро.

Като всеки инструмент, SQLite има своите силни и слаби страни. Като идеално решение за малки приложения и / или предназначени предимно за четене на данни, той не е подходящ за по-големи приложения често пише на базата данни. Това ограничение - в резултат на факта, че архитектурата на SQLite се основава на един файл, който не предоставя данни за разпределението на множество файлове, създадени и използва за заключване на записа.

Подкрепете проекта - споделете линка, благодаря!