質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

トランザクション

トランザクションとは、関連・依存する処理を一連の不可分な処理単位として扱う処理方式を指します。トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれかであることが保証される。処理に失敗した場合は、一連の処理がロールバックされます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

6回答

1688閲覧

トランザクションとプログラムの関数の違い

Yks.waeq

総合スコア23

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

トランザクション

トランザクションとは、関連・依存する処理を一連の不可分な処理単位として扱う処理方式を指します。トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれかであることが保証される。処理に失敗した場合は、一連の処理がロールバックされます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2021/11/06 08:16

こんにちは。トランザクションの意味とプログラムの関数の意味の違いが分からないので質問しました。検索してみると、「複数の処理をひとつにまとめたもの」と紹介している記事があり、関数と何が違うのかが分かりません。
そこで、私はトランザクションという大きな集合があり、その要素として関数があると認識しているのですが、この認識は誤っていますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

コンピューターシステム界隈では、トランザクションと言うとデータの更新が必ず含まれますが、プログラム関数はデータの更新が含まれるとは限りません。

そもそも対比するものではなく、「トランザクション処理を行う関数」や「関数内のトランザクション処理部分」のように、包含する関係にあると思います。

投稿2021/11/06 13:06

編集2021/11/09 09:29
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

トランザクションの意味とプログラムの関数の意味の違い

トランザクションは業務的な処理の単位のことですね。

データベースの命令を例にすると BEGIN TRANSACTION から COMMIT TRANSACTION までが1つのトランザクションになります。(トランザクションの命令は DB や API の種類により異なります。例は SQL Server の命令になります。)
COMMIT すると処理が確定し、ROLLBACK すると処理が無かったことになります。
また、トランザクションはデータベースに限った話ではありません。ファイルシステムの読み書きやメール送受信などもトランザクションとして扱うこともあります。

説明については、こちらの説明が分かりやすいかもしれません。

■ 「トランザクション」とは何か?を超わかりやすく語ってみた!
https://qiita.com/zd6ir7/items/6568b6c3efc5d6a13865

実際のプログラミングの例としては、下記を参照下さい。(少し情報が古いですが、トランザクションの概念としては今もそれほど変わってはいないかと思います。)

■ 接続型データアクセスと短時間トランザクション
https://atmarkit.itmedia.co.jp/fdotnet/entwebapp/entwebapp10/entwebapp10_01.html

私はトランザクションという大きな集合があり、その要素として関数があると認識しているのですが、この認識は誤っていますか?

考えとしてはあながち間違いではないと思います。関数を処理の単位ととらえれば、トランザクションは関数の集合と呼べなくもないと思います。

有識者の方からは突っ込みが入りそうですが、イメージとしては、
・トランザクション … 業務的な処理単位(論理的な処理の単位。成功/失敗=COMMIT/ROLLBACKがある)
・プログラムの関数 … コンピュータが理解できる処理単位
という感じでしょうか・・

投稿2021/11/06 10:36

cx20

総合スコア4648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私はトランザクションという大きな集合があり、その要素として関数があると認識しているのですが、この認識は誤っていますか?

はい。間違っています。
例えば、「内閣総理大臣」と「学級委員」をどちらも「何人かの人間の代表者」という概念でひとくくりにしようとしているようなもので、それぞれの意味の理解のためにはほとんど無意味です。

関数は、プログラミング言語での複数の文をひとつのかたまりにしたものです(言語により用語は違う)。

トランザクションは、主としてデータベースの複数の更新アクセスを不可分(すべての更新を有効にするか、すべて無効にするかの二択)としたものです。

それぞれ、別々に学習されるのがよいと思います。

投稿2021/11/07 04:26

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

えーと……分からなくなってきた。
関数にデータ編集権を丸投げする場合、全ての呼び出し元がだれがいついつまでどこまで独占しているか把握してないと駄目なんですかね?
(ひとつの帳簿に何人も同時に書き込みしようとしているイメージ)

「常に固定の一人の責任者」に依頼するしかなさそう?
ひとつの依頼でトラブル起こしたら他の全ての担当業務も止まりますかね?
……
現在の業務に関連する一部の帳簿だけを貸し出したら確実に返して貰えるかな?
そうすれば貸し出し業務だけになって、何でも自前でやらなくて済むんだけど。
余計な内容まで知らなくて済……
(秘密はクリティカルなリスク)。

投稿2021/11/09 08:33

Kodzura

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

トランザクションにはいろいろな意味があります。
不可分(atomic)な処理を表す場合がありますし、HTTPプロトコルの要求と応答の対を表す場合もあります。また、暗号通貨では、取引の記録を意味します。
プログラムの関数にもいろいろな意味があります。
C言語の関数とFORTRANの関数は意味が違いますし、そのどちらも関数型プログラミングの関数ではありません。

こういう質問をする前に、いろろなトランザクションの違い、プログラムの関数の意味の違いについて勉強することをお勧めします。

投稿2021/11/07 14:06

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

別物だと思います。

私自身はその手の教育(大学は違う学科)を受けていないため、詳しくはわかりませんが、ざっくりと調べたところまったく別物だと思っています。

MySQLを例にとると、ここに提示されているような関数はあくまで、処理をするためだけのものです。(そしてその結果が欲しいと)

でもトランザクションは、基本情報技術者試験に出る内容から考えると、『整合性を取るため』に行われる処理です。データベース特有(?)のものです
(ご指摘にあるように、別の分野とかでも使われるので修正)

ここにあるように、『データの編集が完了してから』すべてのデータが更新されます。

たとえば MySQLで データAを編集 -> データBを編集 -> データCを編集 とした場合、普通にやると、もし『データBで失敗』したらどうなるでしょうか。別のところでもいいですが。
そうなると、他のA,Cとかのようなところと矛盾が生じてしまいます。
そこで、A,B,Cすべて完了してから不具合がなければ完了とする。的な整合性を取ろうとすればどうでしょうか。そう、矛盾が生じませんね。(まあ、その処理自体に矛盾がある場合も無くはないがそれを言うときりがないため無視)

その整合性を取るために、処理A,B,Cをまとめるのがトランザクションっぽいです。

MySQLとかで提供されているMINUTE関数だのは、処理をするためです。

書き方とかはDBソフト? (MySQLとか)によって違うとは思いますが、発想はこれです。

なので別物ですね。

投稿2021/11/06 08:50

編集2021/11/06 13:27
BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2021/11/06 13:12

> 『整合性を取るため』に行われる、データベース特有(?)のものです。 明確な誤りです。 https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3 トランザクションというのは取引等に関連する言葉を借用した概念を指すものであり、整合性は本質的には無関係だし、特定の処理系に依存しません。 プログラミングに関連する使用例においても、OLTP(オンライントランザクション処理)やPofEAAのトランザクションスクリプトパターン、また勘定系システムにおける取引の一連の記録を指す「トランザクションデータ」など、様々な所で登場する用語です。
BeatStar

2021/11/06 13:26

あ、その意味にとれますね……(意図した意味ではなかったのだけど確かにそう読めますね…) 修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問