ホームページ >バックエンド開発 >PHPチュートリアル >2016 年に SQLite を使用すべき 5 つの理由

2016 年に SQLite を使用すべき 5 つの理由

WBOY
WBOYオリジナル
2016-07-29 09:06:481118ブラウズ

2016 年に SQLite を使用すべきトップ 5 の理由
何? SQLiteをまだ知りませんか?言っておきますが、SQLite は実際の運用環境で実際の作業を実行できる素晴らしいデータベースです。この記事では、2016 年に SQLite を使用すべきだと私が考える 5 つの理由を簡単に説明します。
1. シンプルな管理。これまでに Postgres データベースを管理したことがありますか?データベース サーバーの正しい構成を保証するために、理解して学習する必要があることが非常に多くあります (共有バッファ、有効なキャッシュ サイズ、作業メモリ、作業メモリの維持、WAL バッファなど)。アップグレードは恐ろしいプロセスになる可能性があり、データベースをオフラインにして特別なアップグレード プログラムを実行し、バックアップして戻しても動作することを黙って待つ必要がある場合があります。さらに、Postgres データベースが実際にどこに保存されているか知っていますか?ランダムな場所を指して、「これが私のデータベースです」と言えますか? (皆さんご存知のとおり、アプリケーションのニーズは Postgres (または MySQL、Oracle、SQL Server など) を使用しないと満たせない場合が多くあります。しかし、私がここでこれを言う目的は、そういうことではありません。私はただ欲しいだけです。 SQLite データベースの管理を強調する 他の一般的なデータベース サーバーとの違い )
SQLite は単一のファイル (場合によってはファイル + トランザクション ログ) であるため、管理が簡単です。ファイル形式は多くのメジャー バージョンにわたって非常に安定しているため、バージョン 3.0.0 (2004 年) 以降の SQLite データベース ファイルがあると仮定すると、最新の SQLite 3.10.0 を使用してそれを読み取ることもできます。データベース ファイルを USB メモリに置きたい場合は、ファイルをコピーするか、さらに良いのは、ファイルを Dropbox フォルダに保存することです。毎晩バックアップしたい場合は、データベース ファイルを S3 に同期するだけです。行っているデータ分析を同僚と共有したい場合は、データベース ファイルのコピーを送信して、同僚がそれを使用できるようにします。データベースは単一のファイルの形式で存在し、SQLite の特徴である安定した形式を持っています。
さらに、SQLite は設定が簡単です。 SQLite の機能は、コンパイル フラグと PRAGMA ステートメント (実行時構成) の 2 つの方法で管理できます。構成ファイルのようなものはありません。必要なライブラリを構築し、データベース接続を作成するときに実行時オプションを構成するだけです。
2. 継続的な改善と堅固な安定性。 SQLite は、本当に素晴らしいソフトウェア エンジニアによって積極的に開発されています。高品質の新機能が驚くべき速度で追加されています。つい最近、SQLite に json1 拡張機能を介した JSON データのサポートが追加されました。 SQLite は、BM25 アルゴリズムを使用した結果ランキングを含む全文検索拡張機能の改良版もリリースしました。 SQLite 開発者は、新機能の追加に加えて、ライブラリのパフォーマンスを向上させることにも取り組んでいます。バージョン 3.8.11 のリリース ノートには、次の小さな宣伝文が含まれています。SQLite はバージョン 3.8.0 の 2 倍、バージョン 3.3.9 の 3 倍の速度で実行されるようになりました。
非常に多くの変更と改善にもかかわらず、SQLite にバグが発生することはほとんどありません。 SQLite のテスト スイートは業界で最高のものの 1 つとして広く認められており、開発者がこの印象的なドキュメントに遭遇すると、SQLite のテスト方法に関するページが HackerNews に頻繁に表示されます。
3. スケーラブルで制御可能。 SQLite の個人的なお気に入りの機能は、そのスケーラビリティです。 SQLite はアプリケーションに組み込まれているため、同じアドレス空間で実行され、ユーザーに代わってアプリケーション コードを実行できます。 Python 標準ライブラリ SQLite ドライバー (pysqlite) であっても、オプションのドライバー aspw であっても、どちらもカス​​タム SQL 関数、集計関数、および照合順序を定義する API を提供できます。 aspw はさらに一歩進んで、仮想テーブルや仮想ファイル システムの定義にも使用できる API を提供します。現在 ASPW でのみサポートされている仮想テーブルを使用すると、バックアップ データが完全に動的である場合でも、コードでテーブルを定義し、通常の SQL テーブルであるかのようにクエリを実行できます。たとえば、SQL テーブルであるかのように Redis にクエリを実行できる単純な仮想テーブルを作成しました。
同じ名前の関数を作成することもできます。これは、0...n 行の結果を返すために使用される関数です。一例として、入力を処理し、トークンに一致する行を生成する正規表現検索関数があります。私は、この種の関数を非常に簡単に作成できるライブラリ sqlite-vtfunc を作成しました。事実上、SQLite のあらゆる側面がアプリケーションを通じて動作します。
4. 稲妻のように速い。 SQLite は非常に高速です。同じマシン上で実行されるため、クエリの実行時や結果の読み取り時にネットワークに負担がかかりません。また、同じアドレス空間で実行されるため、ワイヤ プロトコル、シリアル化、UNIX ソケットを介した通信はありません。リソースが不足していて効率が重要な場合は、SQLite をモバイル デバイス上で実行することもできます。 SQLite は多数のコンパイル フラグもサポートしているため、使用する予定のない機能を削除できます。
SQLite の速度は、その最大の欠点の 1 つである、書き込み時のデータベース ファイルのロックを補っています。驚くほど高速なデータ書き込みにより、データベースのロックが問題になるのは、多数の同時書き込みが処理される場合のみです。
5.WALモード。 SQLite バージョン 3.7.0 では、先行書き込みログを利用する新しいログ記録方法が追加されています。それ自体はそれほど興味深いニュースではありませんが、Web アプリケーション開発者 (または同時実行性を扱う人) にとってこれが意味するのは、読み取りサービスが書き込みサービスをブロックしなくなり、その逆も同様であるということです。つまり、読み取りと書き込みを同時に行うことができます。 WAL モードがない場合、データベースに書き込むためには、書き込みサービスはデータベースへの排他的アクセスを必要とし、書き込みサービスが終了するまで読み取りサービスは実行できません。ただし、WAL モードを有効にしなくても、サービスへの書き込みは通常、ミリ秒単位で行われることに注意してください。この時間は非常に短いため、同時実行性が高い場合、または非常に長いトランザクションを作成する場合にのみ問題に気づきます。
追加ポイント: BerkeleyDB。 BerkeleyDB の SQLite 統合により、BerkeleyDB はデータベース全体をロックする代わりに個々のページをロックするだけで済むため、アプリケーション開発者はデータベースの同時アクセスに必要なパフォーマンスをさらに向上させることができます。これにより、BerkeleyDB はデータベースの同時負荷下でより効率的に拡張でき、同じページのデータをめぐって競合しないトランザクションを提供できます。 BerkeleyDB は、マルチバージョン同時実行制御 (MVCC) もサポートしています。これにより、データ ページ上で読み取り操作を継続して実行し、書き込みトランザクションを通じてデータを処理できます。
BerkeleyDB のもう 1 つの利点は、効率が向上することです。言い換えれば、BerkeleyDB はより少ないシステム リソースを使用し、より少ないシステム コールを実行できます。詳細については、このホワイト ペーパーとこの簡単な技術概要をご覧ください。 BerkeleyDB の SQL インターフェイスは SQLite のドロップイン代替品であり、同じ API と機能をサポートします。 BerkeleyDB は、レプリケーション (SQLite にはバックアップ ツールがありますが、BDB ほど強力ではないと思います)、暗号化、そしてもちろん BerkeleyDB 自体のすべての機能などの追加機能を提供します。 BerkeleyDB を使用する主な欠点は、構成値に非常に敏感であり、正しいページ サイズ、キャッシュ サイズ、その他の設定を取得するには多くの知識が必要なことです。もう 1 つの欠点はライセンスです。BerkeleyDB ライセンスの詳細については、Oracle のライセンス ページを参照してください。
最後に、SQLite を試してみていただければ幸いです。本番環境には適さない、または Web アプリケーションでの使用には適さないという一般通念に耳を傾けないでください。
さらに詳しく知りたい場合は、SQLite 自体に SQLite をいつ使用するかについての優れたドキュメントがあり、別の RDBMS がより適切に機能するさまざまな状況もカバーされています。
高羅峰兄弟は弟子を無料で募集しています: http://www.hdb.com/party/lzcw-comm.html
LAMP兄弟のオリジナルPHPビデオチュートリアルCD/「PHPを詳しく説明する」を無料で受け取ります。お問い合わせください。詳細については、公式 Web サイトのカスタマー サービス:
http://www.lampbrother.net
【Brothers IT Education】PHP、Linux、HTML5、UI、Android およびその他のビデオ チュートリアル (コースウェア + ノート + ビデオ) を学びましょう!
ネットワークディスクチュートリアルのダウンロード: http://pan.baidu.com/s/1sjOJiAL

上記では、2016 年に SQLite を使用する必要がある 5 つの主な理由を、その側面も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。