タグ付けされた質問 「database-development」

8
独自のデータベースシステムを作成する[終了]
データベースをより効率的に使用するためには、データベースがどのように機能するかを学ぶ必要があり、私の学習方法はそうすることです。 独自のデータベースシステムを作成したい。私はクエリを使用してファイルを解析する擬似データベースを作成することには言及していません。これは、単にクエリ言語を備えたファイルシステムインターフェイスです。データベースエンジンの実際の構造について話しています。そして、私が念頭に置いているのはリレーショナルでも文書指向でもないので(それが存在する場合は「ノード指向」です)、可能な限り抽象的で高レベルのリソースが必要です。 それでは、どのように作成しますか?どのリソース/チュートリアル/本を読んで理解できますか? 言語は少しでも重要ではありません。理想的には、コードは特定の言語に結び付けられるのではなく、概念を説明するための擬似コードになりますが、何でもかまいません。私はグーグルで問題について何も見つけることができませんでした(私はこのテーマについて非常に文盲であるため、正しい検索を入力していないだけかもしれません)。 そのようなリソースが利用できない場合、クライアントを作成する方法について何かが少なくとも正しい方向への一歩になると思います。

2
双方向データ同期のベストプラクティス/パターン
私の仕事では、多くの場合、データベースシステム間の双方向データ同期のアイデアが現れます。典型的な例は、2つのわずかに異なるCRMシステム(たとえば、Raiser's EdgeとSalesforce)と、それらの間で連絡先データの双方向同期が必要な場合です。 APIの考慮事項は別として、同期する共有キーがあり、使用するアルゴリズム/パターンを純粋に考えている場合、これは技術者以外によって過小評価されることが多いタスクです。 たとえば、次のことに注意する必要があります。 両方のシステムでどのレコードが変更されたかを簡単に検出できますか(または、システム間ですべてのレコードを比較して変更を検出する必要がありますか) N時間に1回の同期を行う場合、両方のシステムで同じレコードが多かれ少なかれ同じ時間に変化する競合に対処する方法 リアルタイム同期(つまり、1つのシステムの更新がすぐに他のシステムの更新をトリガーする)を予定している場合、バグまたはシステムクラッシュによる時間の経過に伴う逸脱の処理方法 個人的に私はこれすべてに取り組む方法を考えることができますが、私が参照できるよく知られたパターン、文献またはベストプラクティスがあるかどうか疑問に思っています。

11
データベースレイヤーにアプリケーションロジックを配置することに対する、またはそれに対する議論は何ですか?[閉まっている]
ほとんどのソフトウェア開発者は、アプリケーションロジックをアプリケーションレイヤーに保持することを望んでおり、おそらくここに保持するのが自然であると感じるでしょう。データベース開発者は、トリガーおよびストアドプロシージャとして、アプリケーションロジックをデータベース層に配置したいと考えているようです。 個人的には、アプリケーション層にできるだけ多くの層を残して、層のデバッグを容易にし、層の責任を分離しておくことを好みます。 これについてどう思われますか。また、データベースレイヤーに実装しても問題ない、またはすべきでないものは何ですか? 編集この質問は、DBAの観点からdba.seでもカバーされています。Programmers.seとdba.seの対象者とバイアスは異なるため、将来の読者は、自分に最適なものを決定する前に両方の回答を確認することをお勧めします。

8
ドメイン駆動型設計はアンチSQLパターンですか?
私はドメイン駆動設計(DDD)に飛び込んでいますが、さらに深く掘り下げていくと、得られないことがいくつかあります。私が理解しているように、主なポイントは、ドメインロジック(ビジネスロジック)をインフラストラクチャ(DB、ファイルシステムなど)から分離することです。 私が疑問に思っているのは、マテリアルリソース計算クエリのような非常に複雑なクエリがある場合、どうなりますか?この種のクエリでは、SQLが設計された種類の重いセット操作を操作します。ドメインレイヤー内でこれらの計算を行い、その中の多くのセットを操作することは、SQLテクノロジーを破棄するようなものです。 DDDパターンでは、ドメインレイヤーを変更せずにMongoDBにSQL Serverなどの同じ機能がないことを認識せずにインフラストラクチャを変更できるため、インフラストラクチャでこれらの計算を行うこともできません。 それはDDDパターンの落とし穴ですか?


8
フロントエンドが最初かバックエンドが最初です。良いシステム設計の実践である2つのうち?
現在、私はクライアントに学校入学システムの開発を要求しています。今、これはこの種の挑戦をしている私にとって初めてです。私が作成した過去のソフトウェアのほとんどはそれほど複雑ではありません。 私はあなたのほとんどすべてが複雑なソフトウェアを作成したことを知っています。これについてあなたのアドバイスが欲しいです。最初にフロントエンドまたはバックエンドを設計する必要がありますか? ありがとう! ここに、私が少し前にインターネットで見つけた記事の結論があります。共有したいだけ http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157 フロントエンド開発者とバックエンド開発者(私の意見) 私の個人的なテイク 繰り返しますが、それは訓練の問題であり、いくつかの広範なストロークの一般化です: フロントエンド開発者 通常、CS学位を取得していないか、3級学校のCS学位を取得していません。 基本に似た言語で作業する(PHP is Basicを参照) フォトショップドキュメントをCSS / HTML /などに変換する視覚的なスキルを持っている。 型のない言語のため、反復プログラミングに対して高い許容度を持っている バックエンド開発者 CSの学位または豊富な経験がある 問題解決のアプローチをより体系的にする 漏れているオブジェクトを見つけるのに何日も費やすことを気にしないでください 問題を解決するためのツールを試してビルドする

9
主キーは不変である必要がありますか?
StackOverflowの上の最近の問題は、主キーの不変性についての議論を引き起こしました。主キーは不変でなければならないというのは一種のルールだと思っていました。いつか主キーが更新される可能性がある場合は、代理キーを使用する必要があると考えました。ただし、これはSQL標準には含まれておらず、一部のRDBMSの「カスケード更新」機能により、主キーを変更できます。 だから私の質問は次のとおりです。変更される可能性がある主キーを持つことは依然として悪い習慣ですか?可変の主キーを持つことの短所がある場合、それは何ですか?

8
地理的な住所/場所をデータベースに保存する一般的な方法は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 地球上の住所に適した地理的な住所/場所の正しい形式は何ですか?今のところ: 国 シティ 通り 数 テキストデータ(簡単にするため) zip 緯度/経度 しかし、私はそれを改善できると信じています。国の州/地域または地域のようなものがあるかもしれません。または、シンガポールや香港には、地域/地域/州はありません。 通りはないかもしれませんが、道路や大通りなどがあります。多数の建物が複合している場合があります。床があるかもしれません。部屋番号。等....

3
双方向同期の競合解決
接続が常に利用可能ではないことを前提として、「メイン」データベースサーバーと多くの「セカンダリ」サーバー間の双方向同期、特に競合解決をどのように管理しますか? たとえば、iOSでCoreDataを「データベース」として使用するモバイルアプリがあり、ユーザーがインターネットに接続せずにコンテンツを編集できるようにしたいと考えています。同時に、この情報はデバイスが接続するWebサイトで入手できます。2つのDBサーバーのデータが競合している場合/その場合はどうすればよいですか? (CoreDataをDBサーバーと呼びますが、多少異なることがわかります。) この種の問題に対処するための一般的な戦略はありますか?これらは私が考えることができるオプションです: 1.常にクライアント側のデータを優先度の高いものとして使用します 2.サーバー側でも同じ 3.各フィールドの編集タイムスタンプをマークして最新の編集を行うことで競合を解決してください 3番目のオプションは壊滅的なデータ破損の余地を開くと確信していますが。 CAP定理がこれに関係していることは承知していますが、最終的な整合性のみが必要なので、完全に除外するわけではありませんか? 関連質問:双方向データ同期のベストプラクティスパターン。この質問に対する2番目の答えは、おそらくそれができないということです。

7
独自のデータアクセス/データマッピングレイヤーの作成は「良い」アイデアですか?
現在、すぐに使用できるオブジェクトリレーショナルマッパーを使用するか、独自のロールを作成するかを選択できる状況にあります。 残念ながら、データ層とビジネス層が一緒にマッシュされたレガシーアプリケーション(ASP.NET + SQL Server)があります。システムは、データアクセスに関して特に複雑ではありません。相互に関連するテーブルの大規模グループ(35〜40)からデータを読み取り、メモリ内で操作し、サマリー形式で他のテーブルに保存します。現在、いくつかのリファクタリングの機会があり、データアクセスを分離して適切に構造化するために使用する候補技術を検討しています。 どんなテクノロジーを選択したとしても、 ドメインモデルに、持続性に無知なPOCOオブジェクトがある モックアップされた基礎となるデータソースに対してドメインモデルオブジェクトをユニットテストできるようにする抽象化レイヤーがあります パターンとフレームワークなどに関しては、明らかにこれに関するものがたくさんあります。 個人的には、EFをADO.NET Unit Testable Repository Generator / POCO Entity Generatorと組み合わせて使用​​することを推進しています。これはすべての要件を満たし、Repo / UnitOfWorkパターン内に簡単にバンドルでき、DB構造は適度に成熟(既にリファクタリング済み)であるため、モデルに毎日変更を加えることはありません。 ただし、グループの他のメンバーは、独自のDALを完全にゼロから設計/ローリングすることを提案しています。(カスタムDataMappers、DataContexts、リポジトリ、どこでもインターフェイス、具体的なオブジェクトを作成するための依存性注入過剰、カスタムLINQから基になるクエリ変換、カスタムキャッシングの実装、カスタムFetchPlanの実装...)狂気として私。 投げかけられた議論のいくつかは、「少なくとも、私たち自身のコードを制御できるようになる」または「以前のプロジェクトでL2S / EFを使用したことがあり、頭痛に過ぎなかった」です。(私は以前に実稼働環境で使用したことがありますが、問題はごくわずかであり、非常に管理しやすいものでした) だから、あなたの超経験豊富な開発者/アーキテクトには、この製品を完全な災害になると思われるものから遠ざけるのに役立つかもしれない知恵の言葉があります。EFの問題をかわすことで得られる利益は、車輪の再発明を試みることで、すぐに失われると思います。

14
ORMによるデータベース抽象化を使用する利点は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 9年前に閉鎖されました。 選択したフレームワークで推奨されているORMを使用し始めています。ORMが提供する抽象化の追加レイヤーのアイデアは気に入っていますが、これが本当に何を意味するのか理解し始めています。これは、データベース(mysql)を使用しなくなったため、mysql固有の機能が存在しなくなったためにウィンドウの外に出てしまったことを意味します。 ORMの考えは、データベースをすべて非依存にすることで、私を助けようとしているということです。これはすばらしいように聞こえますが、多くの場合、特定のデータベースシステムを選択する理由があります。しかし、データベースにとらわれないルートをたどることにより、ORMは最小公約数を取ります。つまり、最小の機能セット(すべてのデータベースでサポートされる機能)になります。 長期にわたって基礎となるデータベースを切り替えないことを知っている場合はどうなりますか?データベース固有の機能にもアクセスしてみませんか?

5
LINQ to SQLは死んでいますか?
Linq to SQLを使い続ける理由はありますか、またはEF、NHibernateなどのORMテクニックに移行する方が良いでしょうか。 長い間存在する新しい大規模エンタープライズアプリケーションでLinq to SQLを使用しています。この新しいエンタープライズアプリケーションの動機は、アプリケーションがVisual Basicで作成された通常のものであり、Microsoftがサポートを停止したため、アプリケーションの書き換えを余儀なくされたことです。すでにそこにいるようですが、今回はDAL(Data Access Layer)を使用しています。 私はすでにこの記事を読んでいますが、EFの弱点と比較するだけです。

5
マルチサーバーRDBMSまたはアプリケーションはデータベース参照整合性を処理する必要がありますか?
外部キー、制約、デフォルト値などの項目は、データベース管理システム(この場合はMS SQL 2005)またはアプリケーションによって処理される必要がありますか?両側から意見を聞いたことがありますが、どちらに行くべきかは正直わかりません。 複数のサーバー/データベースにまたがる可能性があり、リンクサーバー間で外部キーを使用できるとは思いません。それに加えて、データベース設計にはいくつかの循環参照があり、ON UPDATE CASCADEすべてを使用できません。 データベースはMS SQL 2005(おそらく2008)であり、データベースとのすべてのやり取りはアプリケーションを介して行われる必要があります。

6
SQLiteは少し過小評価されていませんか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 質問をする前に、まずSQLiteについての私の考えを説明しましょう。 私は、小さくて高速で、さらに重要なことに、本当に必要な機能のみを備えたツールが好きです。だから私はSQLiteが好きで、MS-SQLが少し好きではありません。 たとえば、MS-SQLにはさらに多くの機能、拡張性などがありますが、運が悪い場合はインストールするのが面倒な場合もあります。もちろん、難しいインストールが特定のデータベースを選択しない理由であると言っているわけではありません。 誤解しないでください。MS-SQLは高品質の製品です。私はMS-SQLの経験が豊富です。私はプロとして製品を非常によく理解しています。本当に必要ない(= 10-15未満のユーザーが少ない)状況では、あまり好まない。 データベースのどのくらいの機能を実際に使用していますか?私の経験では、多くの場合、通常のSQL(SELECT、INSERT、およびUPDATE)だけです。 SQLiteが好きです。速くて魅力的です。「インストール」は非常に簡単です。SQLiteは、主張できる以上のことができると思います。なぜ単一プロセス/シングルユーザーアプリケーションにのみ使用するのですか?結局のところ、データベースに常にアクセスしているアプリケーションは多くありません。 たとえば、15人のユーザーがいるERPアプリケーションを考えてみましょう。なぜSQLiteを使用できないのですか?私のプロフェッショナルな経験では、この種のアプリケーションのユーザーはほとんどの場合、アプリケーションを使用している合計時間の約5〜10%でデータベースにアクセスします。他の90〜95%では、画面上の情報を見ているだけで、グリッド/フォームにデータを入力しており、データベース時間の1秒以内の入力を保存しています。Fe:入力時間の1.5分と保存時間の1秒。 「保存時間」中にSQLiteデータベースファイルがロックされている場合、データベースにアクセスする必要のある他のユーザーは待機するだけですが、待機時間が非常に短い(気付かない)ので気が付きません。コードでは、例外を回避するために、データベースの可能性のある「ビジー」時間を処理する必要がありますが、それは難しくありません。 私と同じように考えなければならない人が、SQLiteのクライアント/サーバーソリューションであるSQLiteningを構築しさえしています。これにより、自分がだまされていないのではないかと確信しました。 もちろん、SQLiteが適合しないデータベース集約型のアプリケーションがあります。しかし、今私が考えているように、多くのマルチユーザーアプリケーションは、15ユーザー程度を超えなければ、SQLiteで問題なく動作するはずです。 多くのお客様はハードウェアにあまりお金をかけません。そのため、すべてのもの(Exchange、SQL(s)、クライアントなど)を備えた唯一のサーバーに遭遇することがよくあります。高いシステム要件を持たない製品を提供できれば、顧客は満足するでしょう。SQLiteは(少なくとも多くは)重みを追加しませんが、MS-SQLは追加します。SQLiteは無料、安価、または簡単にインストールできるため、SQLiteは選択しません。実用的/技術的な理由で選択します。 参考:私の職業では、平均して5-6人しか製品を使用しない顧客に製品(カスタムおよび標準、ほとんどはERP関連)を販売しています。いくつかの例外がありますが、10〜15ユーザーを超えません。 質問:私が説明した例のようないくつかのマルチユーザーアプリケーションにSQLiteを使用できると考えるのは正しいですか?知っておくべき技術的な欠点はありますか?正しい選択をするのに役立つ経験(ネガティブまたはポジティブ)は何ですか? 更新:これを他のデータベースの否定的な判断と見なさないでください。それらはほとんどすべてが素晴らしい製品です。ここで私の考えを共有し、これについてのあなたの意見に興味を持っています。

6
データベースプログラマーは何をしますか?
Oracleプログラマーなどについて読むたびに、混乱します。私は彼らが何をするのか正確には知りません。 私の理解では、アプリケーションプログラマはコア機能を開発する必要があります。彼らが使用するライブラリは、GUI開発やデータベース接続に役立つかもしれませんが、そのアプリケーションをプログラムする必要があり、すべてのアプリケーションを異なるものにする機能があります(他のものの微調整バージョンもあります)。 この関係では、データベースプログラミングは基本的にテーブルを作成しておらず、これらのテーブルは、通常フロントエンドであるアプリケーションによって発行されたSQLステートメントに応答して処理されませんか?テーブルの作成は大したことですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.