Database Developer Flashcards

https://interviewbaba.com/database-developer-interview-questions/

1
Q

データベースの設計と正規化に関する経験について説明してもらえますか? (3)

(データベース設計と正規化)

A

1) データの理解:
データとその関係を徹底的に理解することから始めます。これには、関係者と話し合い、データの使用パターンを分析することが含まれます。

2) Applying Normal Forms
/正規形の適用:
データが適切に構造化されていることを確認するために、通常は第 3 正規形 (3NF) までの正規形を適用します。

  • 1NF : テーブルの各セルには単一の値, 各レコードは一意
  • 2NF : 候補キー関係のサブセットに機能的に依存しない単一列の主キー
  • 3NF : 推移的な関数の依存関係がない

3) Considering Denormalization/
非正規化の検討:
場合によっては、正規化原則の厳密な遵守よりもパフォーマンスの方が重要な場合、クエリのパフォーマンスを最適化するために戦略的にテーブルを非正規化しました。

[DBMS 正規化: 1NF、2NF、3NF データベースの例]
https://www.guru99.com/ja/database-normalization.html

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

データベースの種類ごとに適した用法と理由を説明しなさい(3)

(データベーステクノロジーと設定)

A

1) MySQL : 使いやすさと多数のホスティング プロバイダーとの互換性により、Web アプリケーションに最適な選択肢です。そのオープンソースの性質と活発なコミュニティのサポートに感謝しています。

2) PostgreSQL : JSON データ型のサポートや高度な同時実行制御など、PostgreSQL の高度な機能を高く評価しています。複雑なクエリに対するパフォーマンスと信頼性により、エンタープライズ アプリケーションにとって強力な選択肢となります。

3) Microsoft SQL Server : 企業の観点から見ると、SQL Server は非常に堅牢で、他の Microsoft サービスとよく統合されていることがわかります。 SQL Server Management Studio (SSMS) などの強力なツールは、データベースの効率的な管理と開発に役立ちます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

データベースで ACIDを確保する方法を説明しないさい(4)

(トランザクション管理)

A

1) アトミック性(Atomicity): BEGIN TRANSACTION: 、COMMIT、などのトランザクション制御ステートメントを使用して、トランザクションがアトミック単位として処理されることを保証しますROLLBACK。これにより、トランザクション内のすべての操作が正常に完了するか、いずれも適用されないことが保証されます。

2) 一貫性(Consistency): データベース内に適切な制約とビジネス ロジックを実装することで、データベースの一貫性を維持します。これには、データベースへの無効なデータの入力を防ぐための外部キー、チェック制約、トリガーの利用が含まれます。

3) 分離(Isolation): 同時実行性を管理し、分離を維持するために、DBMS によって提供されるトランザクション分離レベル (READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE) を使用します。各トランザクションのニーズに基づいて適切なレベルを選択し、パフォーマンスと必要な分離度のバランスをとります。

4) 耐久性(Durability): 私は、先行書き込みログ (WAL) やバックアップの適切な構成など、データベースに組み込まれた耐久性機能を利用して、一度コミットされたトランザクションがシステム クラッシュの場合でも確実に保持されるようにしています。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

効率的な SQL クエリを作成するための方法説明しなさい (8)*

(SQL の熟練度)

A

R-JABOTIS(Rジャボティス: ガウンの襟元につける装飾)
Requirement
Join
Aggregate
Batch
Optimizer
Type
Indexing
Select

1) Requirement:
要件を理解する: クエリを作成する前に、どのデータを取得または操作する必要があるかを明確に理解します。

2) Data Types:
適切なデータ型を選択する: 列に適切なデータ型を使用して、ストレージを削減し、クエリのパフォーマンスを向上させます。

3) Join:
結合を適切に使用する: サブクエリの方が合理的である場合を除き、パフォーマンスと読みやすさを向上させるために、サブクエリよりも JOIN を優先します。

4) Indexing
/インデックス作成:
WHERE 句や JOIN 条件で頻繁に使用される列では、インデックスを賢く使用してください。

5) SELECT *を避ける:
必要な列のみを選択します。

6) Aggregate: 賢明な集計とフィルタリング:処理されるデータを最小限に抑えるために、WHERE集計関数 ( ) の前にフィルタリング条件 (句) を適用します。GROUP BY

7) クエリ オプティマイザーを使用する: Explain プランとクエリ オプティマイザーを利用して、クエリのパフォーマンスを理解し、改善します。

8) バッチ操作: 大規模なデータセットを扱う場合、ロックを最小限に抑えて負荷を軽減するバッチ操作。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

運用環境でデータベースの移行を手順を説明しなさい(6)*

(データベース管理)

A

VABaMiT-M (ババ・ミットM)

1) Version Control
/バージョン管理:
変更を追跡し、必要に応じてロールバックを容易にするために、すべてのデータベース スキーマの変更をアプリケーション コードとともにバージョン管理システムで管理します。

2) Automated Migration Scripts
/自動化された移行スクリプト:
運用環境に展開する前に、開発およびステージング環境で自動化およびテストできる移行スクリプトまたはツール (Liquibase や Flyway など) を利用します。

3) Backup Before Migration
/移行前のバックアップ:
何か問題が発生した場合に復元できるように、移行を実行する前に必ずデータベースの完全なバックアップを作成してください。

4) Minimize Downtime
/ダウンタイムを最小限に抑える:
ユーザーへの影響を最小限に抑えるためにオフピーク時に移行を計画し、ダウンタイムを削減する戦略を選択します (大規模な既存のテーブルを変更する代わりに新しいテーブルを作成するなど)。

5) Test Thoroughly
/徹底的にテストする:
運用環境をミラーリングする環境で移行を徹底的にテストし、期待どおりに動作することを確認します。

6) 移行後の監視
/Monitor After Migration:
移行後にデータベースとアプリケーションのパフォーマンスを注意深く監視し、発生する可能性のある問題を迅速に特定して解決します。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

以前のデータベース プロジェクトで解決した困難な問題について説明してください。 (問題解​​決と経験)

状況: データベースは時間の経過とともに大幅に増大し、既存のクエリはデータ量の増加に合わせて最適化されていませんでした。

(アクション(5)*, 結果)

A

A-JIMA: あ島

アクション:
1) Analyzing Query:
ボトルネックを特定するために、最も遅いクエリの実行計画を分析しました。

2) JOIN&WHERE:
より効率的な結合と where 句の述語を使用して、次善のクエリを書き直しました。

3) Index:
データの取得を高速化するために、適切なインデックス作成戦略を導入しました。

4) Materialized views:
レポート間で頻繁に使用される集計用にマテリアライズド ビューを実装しました。

5) application level:
開発チームと協力して、アプリケーション レベルでレポート データの一部をキャッシュし、データベースの負荷を軽減しました。

結果: これらの変更を実装した後、レポートの生成時間は数分から 30 秒未満に短縮されました。これは大幅な改善であり、エンドユーザーから好評です。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

NoSQLが適した用途は? (5)*

A

F-CHUL (Fちゅーる):
Frequent
Consistency High Unstructured Large

1) Unstructured or Semi-Structured data: 非構造化/半構造化データを扱う場合

2) Frequent data models changes: スキーマの柔軟性が求められるプロジェクト(データ モデルがよく変更される)

3) Large volumes of data: 大量のデータ処理でパフォーマンスが必要な場合

4) High Write Throughput: 高い書き込みスループットと水平スケーラビリティが必要な場合

5) アプリケーションの整合性(consistency)を重視しない場合

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

データベース内の機密データをどのように保護しますか? (6)*

(データセキュリティ)

A

USE MAC:
Updates Security Encryption
Masking Auditing Control

1) Access Control
/アクセス制御:
厳密なユーザー アクセス制御ポリシーを実装し、ロールと権限を使用してユーザーが必要な最小限の権限を確実に持つようにします。

2) Encryption
/暗号化:
強力な暗号化アルゴリズムを使用して保存中の機密データを暗号化し、暗号キーを安全に管理します。

3) Data Masking
/データ マスキング:
非運用環境にデータ マスキング手法を適用して、機密データが確実に難読化されるようにします。

4) Auditing
/監査:
監査を有効にして機密データへのアクセスと変更を追跡し、不正アクセスの検出と防止に役立ちます。

5) Network Security
/ネットワーク セキュリティ:
ファイアウォールとネットワーク セグメンテーションを使用して、不正なネットワーク アクセスからデータベースを保護します。

6) Regular Updates and Patches
/定期的なアップデートとパッチ:
既知の脆弱性から保護するために、最新のセキュリティ パッチを適用してデータベース ソフトウェアを最新の状態に保ちます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

データベースのパフォーマンスを最適化するためにどのような戦略を使用していますか? (6)*

(性能調整)

A

P-COMIC
Partitioning -
Caching Optimization Monitoring Indexing Configuration

1) Indexing
/インデックス作成:
適切なインデックスを作成してクエリのパフォーマンスを向上させると同時に、インデックスの維持に伴うオーバーヘッドにも注意します。

2) Query Optimization
/クエリの最適化:
SELECT ステートメント内の不要な列を回避し、結合とサブクエリを適切に使用することにより、効率的なクエリを作成します。

3) Caching
/キャッシュ:
データベースの負荷を軽減するために、さまざまなレベル (結果セットのキャッシュ、アプリケーション側のキャッシュ) でキャッシュを実装します。

4) Database Configuration
/データベース構成:
ワークロードに合わせてメモリ割り当て、接続プーリング、バッファ サイズなどのデータベース構成パラメータを調整します。

5) Partitioning and Sharding
/パーティショニングと水平分割 :
大きなテーブルをパーティションに分割するか、

Sharding/水平分割: 同じテーブルを複数のデータベースに用意し、1つのテーブルに保存していたレコードを分散する事で各データベース内に保持されるレコードの量をへらす負荷分散の方法です。

大規模なデータ セットを管理し、クエリのパフォーマンスを向上させます。

6) Monitoring and Profiling
/監視とプロファイリング:
データベースのパフォーマンスを継続的に監視し、遅いクエリをプロファイリングして、ボトルネックと改善の余地がある領域を特定します。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

データベースのバックアップと災害復旧計画はどのように管理していますか? (6)

(データバックアップと災害復旧)

A

1) Regular Backups
/定期バックアップ:
データベースのサイズとトランザクション ボリュームに応じて、完全バックアップ、差分バックアップ、およびトランザクション ログ バックアップをキャプチャする自動バックアップ ルーチンを実装します。

2) Off-site Storage
/オフサイト ストレージ:
ローカルの災害から保護するために、バックアップをオフサイトの場所またはクラウド ストレージに保存します。

3) Test Restores
/テスト復元:
バックアップ復元を定期的にテストして、バックアップと復元プロセスの整合性を検証します。

4) High Availability Setup
/高可用性セットアップ:
データベース ミラーリング、レプリケーション、クラスタリングなどの高可用性ソリューションを構成して、ダウンタイムを最小限に抑えます。

5) Disaster Recovery Plan
/災害復旧計画:
定義された RTO (目標復旧時間) と RPO (目標復旧時点) を含む、災害時のサービス復旧手順の概要を説明する包括的な災害復旧計画を文書化します。

6) Monitoring & Alerts
/監視とアラート:
監視およびアラート システムをセットアップして、災害復旧プロセスに影響を与える可能性のあるバックアップの失敗や問題をチームに通知します。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

OLTP と OLAPの違いとその使用例を説明しなさい。(7)

(データベースの種類と使用例)

A

1) データ
- OLTP: トランザクションの現在のデータ
- OLAP: 過去の統合データ

2) クエリの種類
- OLTP: シンプル、読み取り/書き込み
- OLAP: 複雑で読み取り

3) データベース設計
- OLTP: 正規化, 整合性の維持
- OLAP: 非正規化, さまざまなソースからデータを集約

4) 代表的な操作
- OLTP: INSERT, UPDATE, DELETE
- OLAP: SELECT, aggregate functions

5) 反応時間
- OLTP: ミリ秒
- OLAP: 数秒から数分

6) ユーザー数
- OLTP: 数千から数百万
- OLAP: 数百から数千

7) 用途
- OLTP: ビジネストランザクション: オンライン バンキング、在庫管理、EC、即時のフィードバックを必要とするシステム
- OLAP: データ ウェアハウジングと分析: データ マイニング、ビジネス インテリジェンス、複雑な分析計算

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

ETL について。
- プロセス(3)
- 留意点の例(3)
説明しなさい
(ETL プロセスとツール)

A

ETL (Extract, Transform, Load)

[プロセス]
1) 複数の異種ソースからデータを抽出

2) 運用ニーズに合わせてデータを変換することが含まれます。これには、データのクレンジング、集計、分析用の準備

3) 最後にデータ ウェアハウスにロードされます

[留意点の例]
1) スケジュールに従って実行してデータを処理

2) データの品質と一貫性を確保

3) パフォーマンスの最適化

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

データベースのパフォーマンスを監視し、ボトルネックを特定するにはどうすればよいでしょうか? (6)*

(パフォーマンス監視)

A

HAMMOB : ハンモッブ(ハンモックとモブの造語)

1:H) Regular Health Checks
/定期的なヘルス チェック:
断片化、データベース サイズ、および過去のパフォーマンス傾向を定期的にチェックすることは、プロアクティブなパフォーマンス チューニングに役立ちます。

2:A) Query Analysis
/クエリ分析:
データベース エンジンがクエリを処理する方法を理解し、非効率な操作を特定するために、クエリ実行プランを使用して実行速度の遅いクエリを分析します。(EXPLAIN PLAN)

3:M) Monitoring Tools
/監視ツールの使用:
私は、データベースの健全性とパフォーマンスに関する洞察を提供する、Oracle Enterprise Manager、SQL Server Management Studio、MySQL Workbench などのツールを使用しています。

4:M) Performance Metrics
/パフォーマンス メトリクス:
クエリの実行時間、CPU とメモリの使用量、I/O スループット、接続数などの主要なパフォーマンス メトリクスを定期的に監視しています。

5:O) Index Optimization
/インデックスの最適化:
インデックス戦略を見直し、既存のインデックスを調整します。これには、クエリのパフォーマンスを最適化するために、新しいインデックスを追加したり、冗長なインデックスを削除したりすることが含まれる場合があります。

6:B) Resource Bottlenecks
/リソースのボトルネック:
リソースの使用率を監視することで、メモリ不足やディスク I/O の問題など、パフォーマンスの問題を引き起こしているハードウェア制約があるかどうかを特定できることがよくあります。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

データベース レプリケーションの;
- 目的(2)*
- 実装(3)*
について説明しなさい

(データベースのレプリケーション)

A

LB-MSP

[目的]
1) 負荷分散/Load balancing
2) バックアップ,災害復旧/Backup

[実装]
1) マスター-スレーブ レプリケーション
/Master-Slave:
この方法は、すべての書き込み操作がマスターに送信され、読み取りがスレーブ全体に分散されるレポート目的で使用しました。

2) ピアツーピア レプリケーション
/Peer-to-Peer:
これは分散システム セットアップで使用され、複数のノード間でデータをリアルタイムで更新できるようにします。

3) スナップショット レプリケーション
/Snapshot Replication:
データの変更が頻繁ではなく、特定の間隔で 1 回の操作でデータベース全体をレプリケートできる場合にこれを適用しました。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

データベース・パーティショニングの次の点について説明しなさい;

  • パーティショニングとは (2)*
  • 利点 (3)*
  • 戦略 (3)*

(データベースのパーティショニング)

A

ID, MAP, SAM

[パーティショニングとは] IL
- I: 論理的な整合性を維持しながら(Logical Integrity)
- D: 管理しやすい小さい部分に分割する (Dividing)

[利点] MAP
次の点が向上する;
1) Manageability / 管理性
2) Availability / 可用性
3) Performance / パフォーマンス

[戦略] SAM
1) Size: データベースのサイズ: 大規模なデータベースでは、クエリで小さなテーブルをスキャンできるようになり、I/O 負荷の軽減に役立つため、パーティショニングのメリットが得られます。

2) Access Patterns: データ アクセス パターン: データへのアクセス方法を分析することで、パーティション キーを決定することができました。たとえば、クエリが日付によって頻繁にフィルタされる場合は、日付ベースのパーティショニングが有益です。

3) Maintenance:メンテナンス操作: パーティショニングは、テーブル全体ではなく個々のパーティションに対して操作することで、バックアップ、アーカイブ、パージなどのメンテナンス タスクを簡素化できます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

インデックスでのクエリ最適化について説明しないさい。
(インデックス戦略)
(2)*

A

CC
Composite
Covering

1) 複合(Composite)インデックス:
複数の列にまたがるひとつの インデックス

2) カバリング (Covering)インデックス:
取得対象の列のデータをすべて含むインデックス

DBのインデックスと複合インデックス
https://qiita.com/towtow/items/4089dad004b7c25985e3

MySQL カバリングインデックス
https://qiita.com/riita10069/items/29953f51126ed4e0cf82

17
Q

テストと品質保証について説明しなさい(6)*

A

RIP BUI
BUI - [名詞] ベトナムの伝統的な舟。

1: R) Regression Testing
/回帰テスト:
変更が加えられるたびに、一連のテストを実行して、既存の機能が壊れていないことを確認します。

2: I) Integration Testing
/統合テスト:
単体テストの後、統合テストを実施して、さまざまなデータベース コンポーネントがシームレスに連携し、データベースがアプリケーションの他の部分と適切に連携していることを確認します。

3: P) Performance Testing
/パフォーマンス テスト:
SQL Server Profiler や Oracle の SQL Trace などのツールを使用して、クエリのパフォーマンスを監視し、ボトルネックを特定します。

4: B) Backup and Recovery Testing
/バックアップとリカバリのテスト:
バックアップ プロセスが必要なデータをすべてキャプチャし、リカバリが予想される時間枠内で正しく機能することを検証します。

5: U) Unit Testing
/単体テスト:
SQL Server の tSQLt や Oracle の utPLSQL などのデータベース テスト フレームワークを使用して、ストアド プロシージャ、関数、トリガーの単体テストを作成します。これは、個々のコンポーネントが期待どおりに動作することを検証するのに役立ちます。

6: I) Data Integrity Testing
/データ整合性テスト:
データ品質を維持するために、制約、トリガー、カスケードが意図したとおりに機能することを確認します。

18
Q

シャーディング(Sharding)について説明しなさい;
- シャーディングとは (2)*
- 利点 (3)*
- 欠点 (3)*
(シャーディング)

A

HM SAP CCD

[シャーディングとは] HM
- Horizontally partitioned: データが別々のデータベース間で水平に分割されるデータベース アーキテクチャ パターンです。
- Multiple servers: 各パーティションは「シャード」(Shard)で複数のサーバーに分散できます。

[利点] SAP
- Scalability
/スケーラビリティ:
データベースを水平方向に拡張できるため、単一サーバーをスケールアップするよりもコスト効率が高くなります。

  • Availability
    /可用性:
    1 つのシャードで障害が発生しても他のシャードには影響しないため、可用性が向上します。
  • Performance
    /パフォーマンス:
    ワークロードを複数のシャードに分散することでパフォーマンスを向上させることができます。

[短所] CCD
- Complexity
/複雑さ:
アーキテクチャがより複雑になり、開発とメンテナンスが複雑になる可能性があります。

  • Cross-shard Queries
    /クロスシャードクエリ:
    複数のシャードを含むクエリは困難になる可能性があり、一部のパフォーマンスの利点が損なわれる可能性があります。
  • Data Distribution
    /データ分散:
    「シャード スキュー」として知られる不均一なデータ分散は、パフォーマンスに影響を与えるホットスポットを引き起こす可能性があります。
19
Q

ORM(3) とプレーン SQL(3) について比較しなさい。
(ORM と SQL)

A

ROI-SOL

ORM: ROI
- Reducing code: コードの減少: 開発時間を短縮する
- Object-oriented paradigm: オブジェクト指向: コードベースの一貫性が高まります。
- Inefficient queries: 非効率的なクエリ: 複雑なシナリオに合わせてデータベースの対話を最適化することが困難になることがあります。

プレーン SQL: SOL
- Optimization: 最適化: より詳細な制御が可能
- Less Maintainable: 保守性が低下: 単純な SQL ではコードが冗長になる可能性
- SQL Injection: SQL インジェクションのリスク

20
Q

データベース スキーマ変更のバージョン管理はどのように処理しますか? (4)*

(バージョン管理)

A

G-MAD

1) Git
もしくは VCS(Version Control System) を使用して、データベース スキーマ スクリプトへの変更を保存および追跡します。

2) Migration Scripts
/移行スクリプト:
変更ごとに、どの環境でも実行できる冪等な移行スクリプトを作成します。これらのスクリプトには、順序付けのために連続番号が付けられるか、タイムスタンプが付けられます。

3) Automated Deployment
/自動展開:
継続的インテグレーション (CI) ツールは、制御された方法で移行スクリプトを自動的に実行するように設定されています。

4) Database Schema Comparison Tools
/データベース スキーマ比較ツール:
Redgate SQL Compare や ApexSQL Diff などのツールは、環境のスキーマが同期していることを確認するために使用されます。

21
Q

クラウドのデータベースを比較しなさい(4)

(クラウドデータベース)

A

Amazon RDS:私は、MySQL、PostgreSQL、SQL Server などのリレーショナル データベースのデプロイと管理に Amazon RDS を幅広く使用してきました。私の仕事には、リードレプリカの設定、自動バックアップの有効化、高可用性のためのマルチ AZ 展開の構成が含まれていました。

Azure SQL Database:私は、Azure SQL Database を使用していくつかのプロジェクトを実装し、維持してきました。その組み込みのインテリジェンスと自動チューニング機能を利用して、サポートされているアプリケーションの高いパフォーマンスとスケーラビリティを実現しました。

Google Cloud SQL:他の Google Cloud サービスと統合するいくつかのプロジェクトで Google Cloud SQL を利用しました。特に、Google App Engine とのシームレスな統合と、PostgreSQL および MySQL のマネージド インスタンスのセットアップの容易さが気に入りました。

MongoDB Atlas: NoSQL アプローチを必要とするプロジェクトの場合、水平スケーラビリティのためのシャード クラスターのセットアップやセキュリティのベスト プラクティスの実装など、MongoDB Atlas でクラスターを管理してきました。

22
Q

データ ウェアハウジングの概念とその重要性について説明していただけますか? (5)*

(データウェアハウス)

A

クエリと分析用に設計された集中リポジトリで、
さまざまなソースから大量のデータを収集、保存、管理するプロセスです。

DB HIP

1) Data Consolidation
/データの統合:
データ ウェアハウジングは、異種のデータ ソースを 1 つにまとめます。これは、データ サイロに対処する組織にとって不可欠です。

2) Business Intelligence
/ビジネス インテリジェンス:
データ ウェアハウスは、業務運営に対する包括的な洞察を提供するために、BI ツールと組み合わせて使用​​されることがよくあります。

3) Historical Intelligence
/ヒストリカル インテリジェンス:
データ ウェアハウスは、履歴データを維持することで、予測や意思決定に重要な長期にわたる傾向分析を可能にします。

4) Improved Decision Making
/意思決定の向上:
クリーン化され構造化されたデータを含む単一の信頼できる情報源があると、関係者は情報に基づいた意思決定を行うことができます。

5) Performance
/パフォーマンス:
読み取りアクセスと複雑なクエリ用に最適化されているため、運用システムのパフォーマンスに干渉しません。

23
Q

データベースの同時アクセスを処理し、競合状態を防ぐにはどうすればよいでしょうか? (5)*

(同時実行制御)

A

TOIL
toil: 労苦,労働

1) Transactions/トランザクション:
関連する操作がトランザクションにグループ化されていることを確認します。トランザクションはアトミックで、一貫性があり、分離され、永続的である必要があります (ACID プロパティ)。これは、トランザクション内のすべての操作が正常に完了するか、何も完了せず、データベースの整合性が維持されることを意味します。

2) Optimistic Concurrency Control
/オプティミスティック同時実行制御:
競合が少ないシステムの場合、私はオプティミスティック同時実行制御を使用することがあります。この場合、トランザクションはロックせずに続行でき、競合はコミット フェーズ中に解決されます。

3) Isolation Levels/分離レベル:
アプリケーションのニーズに応じて、適切な分離レベルを設定します。たとえば、「Read Committed」はダーティ リードを回避する一般的なデフォルトです。より厳密な分離が必要な場合は、パフォーマンスが犠牲になりますが、ファントム読み取りや更新の喪失を避けるために「Serializable」を使用することがあります。

4) Locking Mechanisms/ロック メカニズム:
競合状態を防ぐために、データベース ロックを慎重に使用しています。たとえば、行レベルのロックは、同時書き込みの競合から保護しながら、ロックの競合を最小限に抑えるのに役立ちます。

24
Q

分散データベースを使用したことがありますか? 使用している場合、ノード間の一貫性をどのように処理しますか? (3)*

(分散データベース)

A

CRC

一貫性の観点から分散データベースが引き起こす課題を説明する。

1) CAP Theorem
/CAP の定理の理解:設計の選択が CAP の定理に沿って行われ、一貫性、可用性、および分割耐性の考慮事項のバランスが取れていることを確認します。
(Consistency, Availability, Partition tolerance)

2) Replication Strategies
/レプリケーション戦略:
アプリケーションの一貫性のニーズに基づいて、同期レプリケーションと非同期レプリケーションの両方を採用しました。同期レプリケーションは強力な一貫性を保証できますが、非同期レプリケーションはより寛容ですが、より高い可用性と優れたパフォーマンスを提供します。

3) Conflict Resolution
/競合の解決:
最終整合性モデルの場合、異なるノードでデータが同時に更新されたときに発生する競合を解決するために、バージョン ベクターや CRDT (競合のない複製されたデータ タイプ) などの競合解決メカニズムを実装しました。

25
Q

アプリケーション開発者や他の関係者と協力するためのプロセスは何ですか? (5)*
(コラボレーションとコミュニケーション)

A

CRFMD

1: C) Communication Tools:/コミュニケーション ツール:つながりを維持し、効果的なコミュニケーションを促進するために、Slack、電子メール、JIRA などのプロジェクト管理ソフトウェアなどのさまざまなツールを使用しています。

2: R) Code Reviews/コード レビュー:私はコード レビューに参加して、データベース アクセス コードがベスト プラクティスに従っており、パフォーマンスが最適化されていることを確認します。

3: F) Feedback Loops/フィードバック ループ:プロセスを継続的に改善し、問題があればすぐに対処するためにフィードバック ループを確立します。

4: M) Regular Meetings/定期的な会議:開発者や関係者との定期的な会議をスケジュールして、データベース関連タスクの要件と進捗状況について全員の意見が一致していることを確認します。

5: D) Documentation/ドキュメント:最新のドキュメントを維持することが重要です。私は Confluence を使用して、データベース スキーマ設計、データ モデル、開発者に影響を与えるシステムへの変更を文書化します。