お恥ずかしながら私、データベースというものに対する知識が全くない人間でして
トランザクションと言われてもさっぱりな人間なのです。
さて、というわけで今回はSQLiteデータベースにローカルデータを保存する点に関しての日記です。
ではまず「トランザクション」という言葉について調べます。
トランザクション (transaction) とは、分けることのできない一連の情報処理の単位である。
トランザクション内では、ユーザインタフェース、アプリケーションプログラム、永続性記憶資源、各種I/Oが実行される。
我らがウィキペディア先生によるとこうらしい。
「複数の処理をまとめて一つの処理とする」という処理のことをトランザクション処理というようです。
A処理、B処理、C処理の3つのうち、どれか一つの処理でも欠けていてはいけない。
といったときに使うようです。
この処理がすべて終わった時、ようやくそれは「書き込んでも良い正しいデータ」であることが承認される
この承認を「コミット」というようです。
この「コミット」という言葉はSVNでよく見かけます。
SVNでは更新ファイルがただしく更新できずエラーが出れば「コミット」されません。
最後まで正常に進んでようやく「コミット」される、という処理はこういう意味だったのですね。
そして書き込む一歩前の状態に戻すことを「ロールバック」というようです。
処理的には
処理前→トランザクション開始→A処理→B処理→C処理→コミット→処理後
が正しい挙動であるなら
処理前→トランザクション開始→A処理→B処理→なんかエラー発生した
といった場合、ロールバックすることでA処理とB処理はなかったことになり「処理前」の状態に戻せる。
これがいわゆるところの「トランザクション処理」の流れのようです。
そんなこんなで今までよく知らないで使っていた「トランザクション」という言葉を理解する今日この頃。
日々学習あるのみです。
データベースも勉強してみよう。
ではでは
トランザクション・コミット・ロールバック・・・
Re: トランザクション・コミット・ロールバック・・・
過去にC言語からODBCを用いてSQLserverを扱ったことがあるのですが、非常に苦労しました
C言語からSQLを扱う方法が解らなかったうえにSQL自体の言語(命令文?)も勉強せねばならなかったからです。
今後DBプログラミングももっと深く勉強したいと思っておりSQLiteも手軽そうで非常に興味があるのですが
(ゲームのデータ保存や仕事で使用するソフトウェアに使えそうなので)
CやC++からコネクションするにはどのようにしているのでしょうか?ライブラリとかあるのでしょうか?
C言語からSQLを扱う方法が解らなかったうえにSQL自体の言語(命令文?)も勉強せねばならなかったからです。
今後DBプログラミングももっと深く勉強したいと思っておりSQLiteも手軽そうで非常に興味があるのですが
(ゲームのデータ保存や仕事で使用するソフトウェアに使えそうなので)
CやC++からコネクションするにはどのようにしているのでしょうか?ライブラリとかあるのでしょうか?
最後に編集したユーザー taketoshi on 2014年1月16日(木) 20:54 [ 編集 1 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
Re: トランザクション・コミット・ロールバック・・・
SQLiteはライブラリがありますよ。私は使っております。
「An Introduction To The SQLite C/C++ Interface」
http://www.sqlite.org/cintro.html
【補足】
ゲームのセーブデータにSqLiteを使うのはデバッグやバージョンアップが面倒になるだけかと思います。
大量データ・検索が必要じゃないという意味がないかと。
「An Introduction To The SQLite C/C++ Interface」
http://www.sqlite.org/cintro.html
【補足】
ゲームのセーブデータにSqLiteを使うのはデバッグやバージョンアップが面倒になるだけかと思います。
大量データ・検索が必要じゃないという意味がないかと。
最後に編集したユーザー softya(ソフト屋) on 2014年1月16日(木) 21:08 [ 編集 1 回目 ]
Re: トランザクション・コミット・ロールバック・・・
そもそもSQLiteはライブラリしかないです。サーバーは存在しないので。
Re: トランザクション・コミット・ロールバック・・・
SQLiteってDBのみでサーバーはないのですか。
ネットワークと連動させるならばサバ部分は自分で実装しないといけないのですね。
>>そふとやさん
ご紹介ありがとうございます。ライブラリ揃ってるんですねー。見た感じ理解できそうなレベルであります。
#人の日記で学習してしもた。コソコソ
ネットワークと連動させるならばサバ部分は自分で実装しないといけないのですね。
>>そふとやさん
ご紹介ありがとうございます。ライブラリ揃ってるんですねー。見た感じ理解できそうなレベルであります。
#人の日記で学習してしもた。コソコソ
最後に編集したユーザー taketoshi on 2014年1月17日(金) 23:19 [ 編集 1 回目 ]
Re: トランザクション・コミット・ロールバック・・・
「ライブラリしかない」というのは不自然に感じます。スタンドアロンのソフトもあるので。h2so5 さんが書きました:そもそもSQLiteはライブラリしかないです。サーバーは存在しないので。
…と思ったけど、これはライブラリの一部のようですね。
http://www.sqlite.org/sqlite.htmlThe SQLite library includes a simple command-line utility named sqlite3 (or sqlite3.exe on windows) that allows the user to manually enter and execute SQL statements against an SQLite database.