はじめに こんにちは。データアナリティクス事業本部 ビッグデータチームのShiwaniです。 SQLite データベースを使用してみましたが、非常に興味深く使いやすいことがわかりました。このブログでは、SQLite データベースの基本と簡単な使い方についてまとめています。 SQLiteとは SQLite は、localのリレーショナル データベース管理システムです。これはインメモリ オープンソース ライブラリであり、インストールは必要ありません。 また、サイズも500KB未満なのでとても便利です。 SQLiteをいつ使用するか? SQLiteはインストールが不要なので、例えば以下の目的で使用ができます。 内部または一時的なデータベース。 小規模データベース。 テレビ、携帯電話、カメラなどの組み込みソフトウェアの開発。 初心者向けの学習やトレーニング。 詳細については、次のリンクを参照してく
SQLite、複数クライアントからの同時書き込みを可能にする「BEGIN CONCURRENT」文を実装へ SQLiteの開発チームは、複数クライアントからの同時書き込みを可能にするBEGIN CONCURRENT文を実装していることを明らかにしました。 これまでSQLiteでは書き込みの同時実行はできず、つねに1つのクライアントだけが書き込み可能でした。 同時書き込み処理は、データベースのジャーナルモードが「wal」(Write-Ahead-log)もしくはwalを改良した「wal2」で、BEGIN CONCURRENT文を実行した場合に可能となります。 どのように同時書き込み処理が行われるのかについては、上記のWebページの説明を引用しましょう。 ロックが延期されることで同時書き込みが可能に まず、書き込み時のロックがCOMMITまで延期されることで同時書き込みが実現されると説明されて
【SQLite解剖学】Session Module で複数の Changeset を一つに束ねる作法 さて、今回は SQLite Session Module の sqlite3changegroup_new(Changegroup オブジェクトの作成)についてですね。舞台は、雪降る山荘の密室……。なぜかそこでエンジニアたちが「差分データ(Changeset)」を巡ってドタバタ劇を繰り広げているようです。開演です! SQLiteダイエット講座:そのテーブル、どのDB?「オブジェクト名解決」でミスをゼロにする方法 ダイエットに例えるなら、「目の前にあるドーナツ(テーブル)が、どのダイエットメニュー(データベース)に属しているのか」をはっきりさせるルールのようなものです。うっかり間違えると、ご褒美デーじゃないのに高カロリーなデータを食べちゃう(上書き・参照ミス)ことになりかねません。一緒に整理
SQLiteがGitを使用しない理由についての詳細 7月23日、SQLiteはGitを使用しない理由を発表しました。 Gitが提供する機能やユーザーエクスペリエンスの問題を理由に、SQLiteは代わりにFossilを使用して 7月23日、SQLiteがGitを使用しない理由について述べたドキュメントが公開されました。 Gitが提供する機能やユーザーエクスペリエンスの問題を理由に、SQLiteは代わりにFossilを使用しています。 本記事では、SQLiteがなぜGitを使用しないのかについて詳しく説明します。 Gitではプロジェクトの状態を把握できない Gitのインターフェースでは、開発者がプロジェクトの進行状況や変更履歴を把握するのが難しいとされています。 また、モバイルデバイスでの利用も制限されています。 一方、Fossilでは、タイムラインを通じて最新の変更の要約や詳細を簡単に確認す
下記のようなシステムでパフォーマンスが良さげな SQLite を使用予定ですが、もっと速いものが無いか確認のため他のデータベースのパフォーマンスを計測してみました。SQL 利用前提ですが、NoSQL が圧倒的な性能を出す場合は検討する必要があるので KVS も確認しました。 データ件数は 1 億件程度、JDBC SQL 利用可能 INSERT、UPDATE はバッチ SELECT は主キーアクセス性能を重視 将来スケールアウトのための分散はありえるが、スタンドアロンで遅いのはだめ データベースのパフォーマンス比較 計測したデータベース データベース名 タイプ 形態 評判 計測についての備考 SQLite RDB 組み込み ※2 おもちゃ、Android標準 JDBC操作 ※1 H2 RDB 組み込み ※2 組み込み最速 JDBC操作 ※1 Derby RDB 組み込み ※2 Java標準で
はじめに Androidアプリケーションを作成する上でSQLiteを使用してデータベースを扱うことは多々あります。データの永続化や検索といった処理を容易に実装することができるので、多くのアプリケーションで使用されています。しかし、AndroidにはSQLiteを使用するための方法が以下のようにいくつか用意され、それぞれファイル作成時のパーミッションの挙動が異なっています。 SQLiteDatabase#openOrCreateDatabaseを使用して作成する Context#openOrCreateDatabaseを使用して作成する SQLiteOpenHelperクラスを使用して作成する もし、開発者がこれら方法の挙動を十分に理解していない場合、知らずのうちに脆弱性を作り込んでしまいます。 実際に、いくつかのアプリケーションではSQLiteDatabase#openOrCreateDa
こんにちは。FenrirFS 開発担当の福満です。 今日は Delphi を使って SQLite 用の拡張を作成し、正規表現関数を追加してみたいと思います。 ソースコードとコンパイル済 DLL は こちら からダウンロードしてご利用いただけます。 * ご利用に際しては自己責任にてお願いいたします。 * 今回作成した DLL は、Delphi XE2 でコンパイルし、 sqlite3.exe で動作確認をしています。 正規表現ライブラリ Delphi の最新版、Delphi XE2 には、正規表現ライブラリ(System.RegularExpressions の TRegEx)が含まれています。 試してみた感じではサードパーティ製のものと比較しても使いやすく、パフォーマンスも優秀なので、今日はこれを使いたいと思います。 TRegEx の使用例は下記の通りです。 var reg :
新しいテーブルの作成 CREATE [TEMP | TEMPORARY] TABLE テーブル名 ( カラム定義 [, カラム定義]* [, 制約条件]* ) CREATE [TEMP | TEMPORARY] TABLE テーブル名 AS SELECT文 ・カラム定義 名前 [データ型] [[CONSTRAINT 名前] カラム制約条件]* ・データ型 型名 | 型名 ( 数字 ) | 型名 ( 数字 , 数字 ) ・カラム制約条件 NOT NULL [ CONFLICT 句 ] | PRIMARY KEY [ソート順] [ CONFLICT 句 ] | UNIQUE [ CONFLICT 句 ] | CHECK ( 評価式 ) [ CONFLICT 句 ] | DEFAULT 値 ・制約条件 PRIMARY KEY ( 名前 [, 名前]* ) [ CONFLICT 句 ]| UNIQ
これは不気味―iPhoneには過去の位置情報が逐一記録されていることが判明 | TechCrunch Japanという記事が話題に。 iPhoneで取得した位置情報が記録されている、というもの。そのデータを抜き出して可視化するツールが公開されている。 petewarden/iPhoneTracker @ GitHub ソースが公開されているので覗いてみたところ、どうやら"$HOME/Library/Application Support/MobileSync/Backup"以下のファイルにそれらの情報を格納しているsqliteのファイルがあるらしく、そこからすべて抜き出しているらしい。ただBackupディレクトリ以下には無数のファイルがあり、どれがどれか分からない。それを判別するために"Manifest.mbdb", "Manifest.mbdx"というファイルを解析しているようだ。解析方
はじめに そもそもコンピュータのプログラムとは、データの処理を求められるものです。ファイルコンバータなど、単純なプログラムほど、そうした傾向がはっきり現れます。複雑なデータ処理の実現は、プログラマの腕の見せ所でもありますが、自前で不慣れな複雑なデータ構造を実装して、バグに悩まされた経験はありませんか? 1日でサクっと作ってしまう予定が3日になってしまったり、開発の後期になってバグが顕在化したり、なかなか思い通りにはいかないものです。 その一方で、複雑なデータ処理を行うために、データベース(以下、DB)を使うことが一般的になりました。多くのプログラムが、DBと通信して処理を行うように作られています。しかし、一般的なDBは、サービスを提供するプロセスとして実装されているので、ちょっとした用途のために、DBをインストールして運用するのは、ムダに大袈裟に思えてしまいます。 複雑なデータ処理にはDB
はじめに 最近ではWebブラウザやWebアプリケーションを通じて業務を行うことが増えています。一方、その頻度が高まっていくことにより、ネットワーク障害、あるいは出張先でネットワークに接続できない環境といった、いつも使用しているデータにアクセスできない場合でも、業務に支障が出ない対策が求められています。働く場所や状況を問わず、業務システムにアクセスできる態勢を整える解決策の1つに「オフライン・アプリケーション」があります。 「オフライン・アプリケーション」はネットワークに接続できる際に一括でクライアントアプリケーションにデータをダウンロードしてしまい、そのデータをもとに作業を行った後、再びネットワークを通じてデータをアップロードする仕組みのアプリケーションです。常にネットワークに接続しておく必要がないため文字通りオフライン環境で作業ができ、またクライアント側のマシンリソースが使えるため、処理
The SQLite SorcererはAdobe AIR製のフリーウェア。SQLiteを使えばデータベースを用意する手間もなくすぐにデータ管理がはじめられる。SQLもきちんとサポートしているのでデータが大量になったら本格的なデータベースに移行することも容易だ。 Adobe AIRでSQLiteを管理 そんなSQLiteを管理するツールは多々あるが、ローカルにあるファイルを管理したければAdobe AIRで作られたThe SQLite Sorcererが面白いそうだ。一通りのデータ操作に加え、トリガーなどもThe SQLite Sorcerer上で作成できるようになっている。 The SQLite Sorcererはテーブルの作成、フィールドの追加/編集、データのメンテナンスまでこなすことができる。さらにビューを作ったり、トリガーの作成も可能だ。暗号化にも対応し、解析を行う機能もある。ほと
普段から「binmode STDOUT => ":encoding(cp932)";」をよく使うので、なんとかならないかやってみました。 やってみればちゃんと出来るものです。 基本的には、Perlの内部形式の考え方をおさらいする形になった。 プログラムで扱う前にdecode、出力するときはencodeする。 それは、標準入出力だろうが、データベースだろうが、同じ扱い、ということ。 SQLiteはutf8の入出力が(少なくともver3.6.13では)可能のようだ。 まずは出力の時、データベースに渡すステートメントは「Encode::encode_utf8」してから出力する。 そして入力の時、つまり、データベースからデータを取る時は、とって来た後に「Encode::decode_utf8」する。 イメージは下の図。 今回は出力だけなのでSTDINは使っていないが、binmode S
前回のをencode/decodeを使って書き換えてみました。 『from_toはバイト文字列をバイト文字列に変換するのでよくないです』、とのご指摘もありましたので…。 use strict; use warnings; use DBI; use Encode; use utf8; binmode STDOUT, ':encoding(shiftjis)'; # メモリ上のデータベースへ接続 my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:"); # ディスク上のデータベースへ接続 #my $database = 'test.db'; #my $data_source = "dbi:SQLite:dbname=$database"; #my $dbh = DBI->connect($data_source); my $create_tab
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く