問題タブ [database-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1066 参照

php - PHPでデータベース/テーブルの変更を処理するには?

わかりましたので、この問題が発生しました。ユーザーテーブルに「バランス」列を追加する必要があります。私はZendフレームワークを使用していますが、ここでこれを使用したいと思っていました:

http://framework.zend.com/wiki/display/ZFPROP/Zend_Db_Schema_Manager+-+Rob+Allen#Zend_Db_Schema_Manager-RobAllen-6.Milestones%2FTasks

残念ながら、実装段階には入っていないと思います.ヘッダーファイルだけがあり、実装ファイルはどこにもダウンロードされません.

何か提案はありますか?5つのmysqlデータベースに移動して、必要な列を手動で追加したくありません-同時に、データベースを変更する必要があるたびに、このようにしたくありません。Zend スキーマ マネージャー コンポーネントのようなものが必要です。

0 投票する
2 に答える
5413 参照

ruby-on-rails - Rails でのオブジェクトのバージョン管理 (Papertrail と同様だが個々のテーブル)

現在取り組んでいるプロジェクトでは、オブジェクトのバージョン管理を実装する必要があります。残念ながら、各オブジェクトの完全な履歴を保持する必要があるため、Papertrail のような単一のテーブル ソリューションはすぐに管理できなくなります。私が気に入っている Papertrail の機能がありますが、モデルごとに個別のテーブル (acts_as_versioned など) を使用したソリューションでは見つけることができませんでした。

  • コントローラーとモデルの両方からのメタ情報を保存する機能
  • データはシリアル化されるため、スキーマの変更によってバージョン テーブルが変更されることはありません
  • バージョンをトラバースするための強力な方法
  • 変更責任の自動追跡

また、Papertrail にはないボーナスとなる機能もいくつかあります。

  • 組み込みのバージョン差分サポート
  • フルバージョンではなく差分

現在、モデルごとに個別のテーブルを使用するように Papertrail をフォークすることを検討していますが、既存のソリューションがあればその労力を節約したいと考えています。

更新: Vestal Versions はデフォルトで 1 つのテーブルを使用しますが、モデルごとにカスタム バージョン クラスを提供し、ActiveRecord の「set_table_name」メソッドを使用することで、モデルごとに個別のテーブルを作成することができました。Vestal Versions には diff サポートも組み込まれていますが、そのインターフェイスは Papertrails ほど強力ではありません。また、協会のサポートもありません。

更新 2: papertrail はより活発なプロジェクトであるように思われるため、gem をフォークし、vestal バージョンと同様のカスタム クラス サポートを追加しました。これにより、モデルごとに個別のテーブルを定義できるようになりました。私のフォークはここにありますが、すぐにメインのプロジェクト リポジトリに取り込まれることを願っています。 https://github.com/benzittlau/paper_trail

0 投票する
1 に答える
1386 参照

version-control - 単純なバージョン管理システムまたはバージョン管理ファイル システムまたはバージョン管理データベース

多数のレコードまたはファイル (~5,000 万、~100GB のアンパック、~20MB のパック) 用の単純なバージョン管理システムを探しています。ファイルはそれぞれわずか数キロバイトで、一意の ID を持っているため、フラットな構造 (テーブル、ディレクトリなど) に格納されているかどうかは気にしません。平均して、各レコードは 1 か月に 1 回変更されますが、ほとんどの変更の差分は 1 キロバイト未満であるため、バージョンを圧縮するのは簡単です。ただし、バージョンごとに 1 つのエントリを持つ単純なデータベースでは、すぐに大きくなりすぎてしまいます。次の操作が必要です。

  • 基本的な CRUD 操作: 作成、読み取り、更新、削除
  • 最近の変更のクイック リスト
  • 特定のレコードの最近の変更のクイック リスト
  • 特定の期間の変更を照会する
  • 特定のユーザーによる変更のクエリ (各編集はいくつかのユーザー ID に関連付けられ、オプションでコメントとしてコミット メッセージを持ちます)
  • 書き込み操作の場合、不正な形式のレコードを検証して拒否するためのコミット フックが必要です。

簡単に言えば、簡単な記録やファイルのための Wiki のようなソフトウェアを探しています。

私は可能な解決策について考えました:

  • ファイルをバージョン管理システムに配置します。これにより、レプリケーションと多くの利用可能なアクセス ツールが得られるため、これが私の推奨ソリューションです。しかし、git のような分散システムにはデータ量が多すぎます。成功した同様のタスクに Subversion を使用している人はいますか?

  • データベースまたはファイル システムに独自のバージョン管理を実装します。おそらく、圧縮されたレコードと差分のみを保存する必要があり、より多くの作業と何かを学ぶ必要があります。楽しみのためだけなら、これが私の好ましい解決策です。

  • バージョン管理ファイル システムを使用します。これにより、セットアップ、複製、およびアクセスがより困難になります。おそらく、ファイル システムの上に独自のアクセス API を実装する必要があるでしょう。

  • バージョン管理データベース システムを使用します。いくつか提案できますか?

  • バージョニングを備えた他の既存のデータ ストアを使用する(MediaWiki?、Amazon Cloud Drive?、...)

明らかに多くのパスがあります。同様の、または大量のデータに対して成功した他の人が使用したパスはどれですか?

0 投票する
2 に答える
530 参照

database - イニシャルとデルタを使用したRDBMSのデータセットのバージョン管理

イニシャルとデルタを使用してリモートデータセットをミラーリングするシステムに取り組んでいます。イニシャルが入ると、既存のものを一括削除し、新しいデータを一括挿入します。デルタが発生すると、システムはそれを更新、挿入、および削除に変換するための一連の作業を実行します。イニシャルとデルタは、データの整合性を維持するために長いトランザクション内で処理されます。

残念ながら、現在のソリューションはあまりうまくスケーリングしていません。トランザクションは非常に大規模で長時間実行されるため、RDBMSはさまざまな競合の問題で行き詰まります。また、デルタがどのように適用されるかについての適切な監査証跡がないため、データセットのローカルバージョンとリモートバージョンが同期しなくなる原因となる問題のトラブルシューティングが困難になります。

1つのアイデアは、トランザクションでイニシャルとデルタをまったく実行せず、代わりに、どのデルタまたはイニシャルから来たかを示すバージョン番号を各レコードに添付することです。イニシャルまたはデルタが正常にロードされると、データセットの新しいバージョンが利用可能であることをアプリケーションに警告できます。

これは、初期およびデルタから特定のバージョンまでのデータセットのビューをどのように正確に構成するかという問題を残すだけです。(AppleのTimeMachineは同様のことを行い、ファイルシステムのハードリンクを使用して特定の時点の「ビュー」を作成します。)

この種の問題を解決したり、この特定のソリューションを実装したりした経験のある人はいますか?

ありがとう!

0 投票する
2 に答える
67 参照

versioning - デフォルトのインストール/カスタマイズされたトリガーとストアド プロシージャのバージョン管理

私は小さな会社の開発者で、一貫した変更管理に苦労しています。開発者以外のスタッフが、実稼働インストールでストアド プロシージャとトリガーを微調整しているという問題に直面しています。これらの変更は、開発チームがデータベースの変更がソース管理に組み込まれていることを確認するために使用するプロセスから外れたため、アップグレードを適用すると上書きされます。

技術的および個人的な観点から、この問題にどのようにアプローチすることをお勧めしますか?

編集 1: 現在のプロセスの背景を少し説明すると、これに役立つ可能性があります。継続的インテグレーション サーバー (TeamCity) を使用して、チェックイン時にインストール アーティファクトとラベル svn を生成しています。残念ながら、不正なスキーマの変更を止めることは私の能力を超えているため、オーバーライド可能なトリガー/sp 定義を可能にする設計パターンを見つけたいと思っています。

0 投票する
1 に答える
919 参照

cocoa-touch - Xcode4でデータモデルをバージョン管理されたデータモデルに変える方法は?

Xcode 3.x では、モデル バージョンを追加するだけで、Xcode がデータモデルをバージョン管理されたデータモデルに変換したことを覚えています。何らかの理由で、Xcode4 で同じ手順に従って実行しようとすると、環境がクラッシュし、必要な変更が行われません。

Xcode4でデータモデルをバージョン管理および移行するための正しい手順を知っている人はいますか?

この前の質問を見つけてコメントしました。同じバグだと思いますが、まだ修正されていません。

0 投票する
2 に答える
6039 参照

mysql - MySQLでの行のバージョン管理

テーブルに整数バージョンフィールドを含め、行が更新されるたびに自動インクリメントします。MySQLでこれを行うことは可能ですか?

について話しているのではないことに注意してくださいTIMESTAMP。これは、同じ秒の間に2つの同時更新が発生する可能性があるため、信頼性がありません。

0 投票する
1 に答える
541 参照

inheritance - sqlalchemyでバージョン管理とマルチレベル継承を使用する際の問題

sqlalchemy Webサイト(http://www.sqlalchemy.org/docs/orm/examples.html#versioned-objects)で説明されているバージョニングレシピを、マルチレベルの継承モデル(結合テーブル継承)と一緒に使用しようとしています。 )。

これが私の宣言的なステートメントです:

「create_all()」を実行しようとすると、次のエラーが発生します。sqlalchemy.exc.ArgumentError:「tissue_history」と「leucegene_tissue_history」の間に外部キーの関係が見つかりません。

シングルレベルの継承は美しく機能しますが(つまり、「Tissue」で停止し、「LeukemicTissue」を宣言しない場合)、機能するにはマルチレベルの継承スキームが本当に必要です。

誰かが私に何か指針を与えることができますか?

ありがとう !!

0 投票する
5 に答える
11093 参照

git - 複雑な分岐システムでのデータベースの移行

現在の開発ワークフローでは、データベースの移行(Ruckusingを使用)を導入して、開発者のdbスキーマの同期を維持しています。それはうまく機能し、使用は非常に簡単ですが、データベースのバージョン管理システムで次の問題に直面しているVCSとしてgitに切り替えました。

しばらくの間開発中のブランチをチェックアウトすると、データベーススキーマが元のブランチのスキーマから大幅に逸脱している可能性があります。これにより、データベースの競合が発生する場合があります。論理的には、以前に行っていたブランチに応じて移行を実行する必要があるようですが、それは非常に高速に複雑になる可能性があり、確かに一部の人に問題が発生します。そして、私が知る限り、ブランチ対応のデータベース移行システムはありませんか?

機能ブランチに切り替えると、いくつかの移行を実行する必要があり、他の移行を実行する必要がある場合があります。技術的には、現在のdbmigrationスクリプトを使用すると、これは不可能に思えますが、適切な代替手段はありますか?非常にアクティブで分岐した開発システムでデータベースの移行を処理するための好ましい方法はありますか?

0 投票する
1 に答える
528 参照

sql-server - 正しい順序で sp に依存する RoundhouseE を使用してインデックス作成スクリプトを実行する方法

回し車について質問です。インデックスを作成するために必要なスペースを把握するために sp を呼び出すスクリプトがあります。(最大 db サイズの制限がある sql Express を使用しています)。残っているスペースの量に応じて、一連のテーブル全体から行を削除し、通常のチェックでインデックスを作成します (sysindex に存在しない場合...インデックスを作成...)。呼び出された sp は、将来、他のインデックス作成スクリプトで使用されるため、オプションがない限り、インデックス作成スクリプト (インライン) の一部ではなく、sp として保持することをお勧めします。問題は、roundhouse が最初に UP フォルダーでインデックス作成スクリプトを実行し、次に sp フォルダーまたは runfirstafterUp フォルダーの後に移動することです。最初にデータベースにプラグインされていないため、sp を見つけることができません。このシーケンスの問題に対する解決策があるかどうかを教えてください。ありがとう