ジャンゴ使用3パラダイムトランザクションデータベース

トランザクション操作ORM

トランザクションのACIDの4つの特徴は何ですか

アトミック性、一貫性、独立性、耐久性

⑴アトミック(不可分)

  操作ならば、それは完全に、データベースに適用する必要があります成功した場合には原子性はすべて成功するか、すべてのロールバックに失敗する前の二つのブログは、トランザクションの機能を説明しますいずれかが含まトランザクション内のすべての操作を指し、同じ概念であり、取引のオペレータ失敗は、データベースへの影響を持つことができません。

⑵一貫性(整合性)

  トランザクションは、トランザクションの実行と実装が一貫性のある状態でなければなりません前と後と言うことですつまり、別の一貫した状態にある一貫した状態からデータベースを変換する必要があることに一貫性がな手段。

  ユーザAとユーザBのお金の両方が5000の合計まで追加した場合、転送を取り、AとBの間の転送は、トランザクションの終了後に、複数のアカウントを有効にどんなにお金を持っていなければならない二人のユーザまで追加しますトランザクションの一貫性である5000、。

⑶分離(単離)

  複数のユーザがそのようなテーブルを用いて動作しているときなど、データベースへの同時アクセス、各ユーザトランザクションオープン用のデータベースは、動作は同時複数のトランザクション間の分離のために、他のトランザクションによって妨害されていない単離。

  それは、このような効果を達成するために、次のとおりです。各トランザクションは感じていないので、任意の二つの同時トランザクションT1とT2のために、T1は、トランザクションに表示され、T2またはT1は、開始前に終了、またはT1の終了後に開始されました同時に実行するその他の事項があります。

  データベースの分離レベルを数多く提供してトランザクション分離については、後でに導入されます。

⑷永続性(耐久性)

  永久的である、それは操作の失敗を経験した取引でも、データベース・システムの場合に失われることはありませんコミットトランザクションがコミットされると、データベース内のデータを変更することを永続手段。

  しなければならないことは、たとえば、我々はJDBCデータベース操作を使用し、トランザクションがコミットする方法で、ユーザーが要求された後、トランザクションは問題があるデータベースも、この時点た場合、プロンプトが表示され、あなたが提出されたトランザクションを特定し、修正できるようになるまで、私たちは、プログラムの実行を完了すると、完了ですそれ以外の場合は、取引の迅速な完了を確認するために私達の原因となります、私たちのビジネスの完全な実装を完了しますが、主要なデータベースの故障のため、トランザクションエラーを実行せずにします。

4つの特性(ACIDと呼ばれる)上記トランザクションの概要、今焦点は、複数のスレッドが開いているデータベース内のデータ・トランザクションを操作しているときに、データベース・システムは、各スレッドが取得することを保証するために、操作を単離することができるように、トランザクションの下で分離を説明するためにデータの精度は、データベースが提供するさまざまな分離レベルの導入前に、のトランザクションが孤立とみなされていない場合は、問題の種類が起こる見てみましょう:

ジャンゴ使用トランザクション

# django中使用事务
from django.db import transaction
# 开启事务
with transaction.atomic():
    # 在缩进的代码中书写数据库操作
    # 该缩进内的所有代码 都是一个事务
    pass  

# 装饰器使用 
from django.db import transaction

@transaction.atomic
def viewfunc(request):
  # 这些代码会在一个事务中执行
  ......

3つの文章を使用

from django.db import transaction

# 创建保存点
save_id = transaction.savepoint()

# 回滚到保存点
transaction.savepoint_rollback(save_id)

# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save_id)

三つのフォームデータベース

名前が示すように、道を標準化しました。基盤となるストレージシステムなどのデータベース、直接ビジネス層の性能に影響を与え、そのため、科学的かつ標準データベースを使用する開発者を有効にするために、三つの主要なパラダイムが浮上しました。これは、テキストおよび実施例は3つのパラダイムを記述するより簡潔になります。

第1正規形(1NF):

データベーステーブルの各列は不可分アトミックデータ項目である必要があります。

画像-20191128163438469

第2正規形(2NF):

非コードに基づいて1NFは(主キーの依存性に基づいて、機能の非プライマリ性1nFの一部を除去するため)、候補符号の特性に完全に依存しなければなりません

第二のパラダイムは、データベーステーブルと、各列の主キーに関連する、唯一の主キー(主要な用語のプライマリキー)の特定の部分に関連していないことを確認する必要があります。

画像-20191128163921207

第3正規形

テーブル内のデータと、各列のデータを直接主キーに関連していることを確認する必要はなく、間接的

画像-20191128163959106

おすすめ

転載: www.cnblogs.com/lddraon1/p/11951012.html