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

このタグは、一般的なデータベースの質問用です。SQLに固有の質問の場合は、代わりにそのタグを使用してください。

12
データストレージとしてのXMLの使用[終了]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私はXML形式と次の引用について考えていました。 「XMLはデータベースではありません。データベースになることを意図したものではありませんでした。データベースになることはありません。リレーショナルデータベースは、20年以上の実装経験を持つ実績のあるテクノロジーです。彼らは、固体、安定した、有用な製品です。彼らは去りません。XMLは、異なるデータベース間またはデータベースと他のプログラム間でデータを移動するための非常に便利なテクノロジーです。ただし、それ自体はデータベースではありません。いずれかのようにそれを使用しないでください「 - 。効果的なXML:50の具体的な方法をあなたのXMLを向上させることではElliotte Rusty Harold著(230ページ、パート4、項目41、第二段落) これは、XMLをデータストレージに使用すべきではなく、プログラム間の相互運用性にのみ使用すべきであることを本当に強調しているようです。 個人的にはapp.config、プログラムの設定を保存するために使用される.NETのファイルは、XMLファイルのデータストレージの例です。ただし、構成などではなくデータベースにはXMLを使用しないでください。 ポイントを開発するために、2つの例を使用します 。A)すべてが1レベルのフィールドを持つ顧客に関するデータ。つまり、子を持たない1人の顧客にすべて関連するいくつかのフィールド があります。とプロパティは非常に理にかなっています だから私の質問は、これはまだ有効なステートメントであり、XMLを使用してデータを保存することは現在受け入れられますか? 編集:私は彼の入力/追加のコンテキストを求めるためにその引用の著者にメールを送りました。

7
デスクトップアプリケーションからデータベースセキュリティをどのように処理しますか?
約10年間、私はSQL Serverデータストアを使用して社内のさまざまなデスクトップクライアントアプリケーションに取り組んできました。これらのプロジェクトを開始したことはほとんどありませんでした。ほとんどは買収作業です。 どこでも一定のように思われることの1つは、このアプリケーションが使用する単一のグローバルSQL Serverユーザーアカウントがあり、それが共通データベースへのアクセス許可を付与しsaたことです。 。 アプリケーションがデータベースへのアクセスに使用するこのユーザー名とパスワードを実際に非表示にすることはできません。通常、ファイルに保存されているiniかconfig、実行可能ファイル自体に焼き付けられています。いずれの場合も、少し掘り下げればユーザーに表示されます。あるケースでは、実際にconfigファイルを使用して暗号化しましたが、もちろん暗号化キーを実行可能ファイルに保存する必要がありました(この制限にナイーブではありませんでしたが、十分に精通している人をいじるのを効果的に阻止しました)configファイルを検索します)。 これらのシステムはすべて、アプリケーションに組み込まれたユーザー認証システムを備えていましたが、もちろん、すべてアプリケーション自体で管理されていました。つまり、ユーザー情報はデータベースに保存されていました。アプリケーションは、アクセスレベルに基づいて実行できることを制限していましたが、データベースに接続してアドホッククエリを実行できる場合は、あらゆる意味で意味がありません。 この問題を回避するために他のシステムが何をするかを知りたいです。私が知っているオプションは次のとおりです。 SQL Serverのセキュリティメカニズムを使用してユーザーとロールのリストを管理し、デスクトップアプリケーションにT-SQLクエリを介してユーザーを追加および削除させます。 データベースに直接接続する代わりに、サーバー上で実行される何らかの種類のWebサービスを作成し、そこに認証ロジックを配置します。すべてのリクエストにセキュリティ検証を実行させます。 ユーザーをデータベースから分離しているため、ユーザーは最上級のエンティティではなく、外部キー関係などでそれらを参照できないため、最初のオプションは少しいです。 2番目は、大きなパフォーマンスの問題のように思えますが、多くの余分な作業があり、さらに、NHibernateのようなORMマッパーを簡単に使用することはできません(と思います)。 誰でもこれを経験していますか?ベストプラクティス? 編集 もう少し考えて、SQL Server認証は実際にこの問題を解決できますか?たとえば、タイムシートを編集できるようにユーザーがタイムシートレコードを挿入および更新できる必要がある場合、SQLサーバーがタイムシートの詳細テーブルの他の行へのアクセスを禁止する方法はありません。つまり、他の人のタイムシートも読み書きできます。

5
データベースのインデックス作成
私はデータベースにあまり精通していませんが、現在、インデックス作成メカニズムを理解しようとしています。 私が知っていることから、RDBMSでは、列にインデックスを付けると、その列による検索が高速になります。これはトリプルストアにも当てはまります。インデックスのみが、主にサブジェクト、次にオブジェクトなどで検索することを想定しています。 RDBMSについてはわかりませんが、トリプルストアでは、複数のインデックスを定義して、各クエリに最適なインデックスをストアに選択させることができます(うまくいけばこの権利を理解できました)。当然、次の質問が表示されます。 可能性のあるすべてのインデックスをトリプルストアに追加し、RDBMSに拡張してはいけないのはなぜですか。各列にインデックスを作成しないのはなぜですか(私は怠zyではないと仮定して)。
12 database 

4
オープンソースプロジェクトのデータベース構造を使用できますか?
CMSシステムのデータベース構造を見つけましたが、このデータベースが作成されているEFでデータベース構造をコピーしたいのですが、GNU v2ライセンスの下にあるオープンソースソフトウェアのデータベース構造をコピーしても大丈夫ですか? ソフトウェアの残りの部分はデータベース構造だけにしたくない。

5
プロジェクト開始時のアジャイルメソッドとデータベース
アジャイルは初めてで、どのように始めればいいのかわかりません。アイデアは、スプリントでプロジェクトの小さな部分を作成することです。しかし、私が取り組んでいるプロジェクトにはデータベースが必要であり、データベースはプロジェクトで何でもできるようにほぼ機能している必要があります。 それでは、アジャイルプロジェクトはこれをどのように処理しますか、データベースを作成することから始めますか? たとえば、Scrumを使用している場合、ユーザーストーリーをどのように行い、データベースをテストしますか。 コードを必要とするストーリーの中で、dbの一部を実行したいですか。 「ユーザーとして登録する必要があります...」というストーリーがあるとします。このストーリーの一部としてデータベースにユーザーテーブルを作成しますか? アジャイルは、データベースの設計にどのように役立ちますか?

8
リレーショナルデータベースでシングルトンをモデル化する最良の方法
Webアプリケーション用のリレーショナルデータベーススキーマを設計するとき、1つの行と1つの行のみを含むテーブルを作成する場合がよくあります。それはそれを設計する間違った方法のように感じますが、私は大幅に良いものを思い付くことができません、またはそれは明らかに「それを行うための正しい方法」です。 最近の例は、ユーザーがホームページのコンテンツを手動で制御できるサイトです。さて、ホームページは1つしかありません。説明テキストを含む領域のテキストフィールドなど、ホームページを作成するために必要なすべてのフィールドを持つテーブルを作成しました。大きな画像ファイルの名前を保存するフィールド。ホームページなどで紹介される記事を指すいくつかの外部キー。それは機能しますが、1行だけのテーブルがあるのは間違っているように感じます。 過去に、ホームページのテーブルで複数の行を許可したり、ランダムに1つの行を選択するなど、他の多くのデザインを試しました。「active」という名前のブールフィールドを追加して、アクティブなホームページの1つをランダムに選択しようとしました。アプリケーションロジックで、常に1行のみをアクティブにしようとしました。ホームページテーブルを作成せず、記事などの他のすべてのアイテムにfeatured_on_homepageのような名前のブールフィールドを持たせることさえしませんでした。 ほとんどの場合、設定ファイルに一連の定数を含むホームページを作成できます。設定ファイルの主な問題は、開発者が制御できることです。ホームページの内容のようなものはユーザーが編集するものなので、データベースに入れなければなりません。 多くのサイトでは、5つの最新記事を選択するなどのクエリを使用してホームページのようなものを作成できるため、この問題はありません。しかし、厳密な要件で手動でキュレーションされたページがある場合、データベースでモデル化するのは難しいです。しかし、写真の表と記事の表があるとします。要件は、ホームページにユーザーが手動で制御する写真を正確に5つ、記事を3つ、任意のテキストのブロックを2つ表示することです。データベースでそれを正しい方法でどのようにモデル化しますか? また、ホームページだけでなく、他の多くのケースでもこのモデリングの問題があります。これは、私が思いつく最も簡単で最も一般的に適用可能な例です。

4
新しいJava永続化ツールについてどう思いますか。それは実際にはORMではありませんか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Javaでの永続性 過去数年にわたって、EJB 2.0、Hibernate、JPA、および自家製の概念などを使用して、Javaの永続性抽象化の分野での経験を集めてきました。彼らは、急な学習曲線と多くの複雑さを持っているように思えました。さらに、SQLの大ファンとして、多くの抽象化モデルがSQLを抽象化しすぎて、SQLではなく非常に優れた概念である「基準」、「述語」、「制限」などの概念を作成すると考えました。 Javaでの永続性抽象化の一般的な考え方は、RDBMSがオブジェクト指向の世界と何らかの形で一致するオブジェクトリレーショナルモデルに基づいているようです。ORM討論は常に感情的なものでした。すべての人に適した単一の解決策は存在しないようです。そのような解決策が存在する可能性があるとしてもです。 jOOQ ORM関連の問題を回避する方法の個人的な好みは、リレーショナルの世界に固執することです。データモデルのパラダイムの選択は、個人的な好みであるため、または具体的な問題に最適なデータモデルの問題であるため、議論のトピックではありません。私が始めたいと思う議論は、jOOQと呼ばれる私自身の永続化ツールに関するものです。私はjOOQを設計して、最新の永続化ツールが持つ利点のほとんどを提供します。 SQLに基づくドメイン固有言語 基礎となるデータベーススキーマをJavaにマッピングするソースコード生成 多くのRDBMSのサポート いくつかの最新の永続化ツールにあるいくつかの機能を追加します(間違っている場合は修正してください): 複雑なSQLのサポート-ユニオン、ネストされた選択、自己結合、エイリアス、ケース節、算術式 非標準SQLのサポート-ストアドプロシージャ、UDT、ENUMS、ネイティブ関数、分析関数 詳細については、ドキュメントページhttp://www.jooq.org/learn.phpをご覧ください。LinqはSQL専用に設計されているわけではありませんが、Linq for C#に非常によく似たアプローチが実装されていることがわかります。 質問 さて、私はSQLの大ファンだと言って、他の開発者がjOOQ(またはLinq)に対する私の熱意を共有するかどうか疑問に思います。永続性抽象化へのこの種のアプローチは実行可能なものですか?あなたが見るかもしれない利点/欠点は何ですか?どうすればjOOQを改善できますか?また、あなたの意見には何が欠けていますか?概念的または実際的にどこで間違ったのですか? 批判的だが建設的な答えを高く評価 議論は感情的なものであることを理解しています。すでに同様のことを行う多くの素晴らしいツールがあります。私が興味を持っているのは重要ですが、あなた自身の経験や読んだ記事に基づいた建設的なフィードバックです。
12 java  orm  database  linq 

2
いくつかのマイクロサービスが失敗した場合、それらを更新するソフトウェアをどのように設計しますか?
他のサービスが安定している間、ダウンまたはダウンするサービスを支援するために使用できる設計パターンまたはプラクティスはありますか? 3つのマイクロサービスがあり、そのうち2つが正常で、1つがPOSTの途中で停止した場合はどうなりますか?2つはPOSTを受け取り、1つは受け取りません。リクエストをサービスに発送しているため、取引ができないと思います。 そのためにどのように設計しますか?さまざまなデータベースに孤立したデータは必要ありません。

3
ORMレイヤー上に抽象化レイヤーを作成する
リポジトリにORMを使用している場合、データベースからすでに十分に抽象化されていると思います。 ただし、私が現在働いているところでは、後でORMを変更したい場合に備えて、ORMを抽象化するレイヤーが必要だと誰かが信じています。 多くのORMで機能するレイヤーを作成するのは本当に必要なのでしょうか、それとも単純に頭がかかりますか? 編集 より詳細に説明するために: AutoMapperでマップされるPOCOクラスとEntityクラスがあります。エンティティクラスは、リポジトリレイヤーによって使用されます。リポジトリレイヤーは、追加の抽象化レイヤーを使用して、Entity Frameworkと通信します。 ビジネスレイヤーは、Entity Frameworkに直接アクセスできません。ORM上の抽象化の追加レイヤーがなくても、これはリポジトリレイヤーを使用するサービスレイヤーを使用する必要があります。どちらの場合も、ビジネスレイヤーはORMから完全に分離されています。 主な議論は、将来ORMを変更できるようにすることです。リポジトリレイヤー内に実際にローカライズされているため、私にとっては既に十分に分離されており、「品質」コードを得るために抽象化の追加レイヤーが必要な理由はわかりません。
12 database  orm 

4
データアクセスレイヤー内のビジネスオブジェクト
そのため、TDDを介してデータアクセスレイヤーを作成してきましたが、やや懸念がありました。私はむしろ間違った道を進んで行きたくないので、私の考えがきれいなアーキテクチャに沿っているかどうかを確認するように皆さんにお願いしたいと思いました。 私のデータアクセスレイヤー(略してDAL)内のメソッドは非常に単純です。これらはデータベース内のストアドプロシージャと一致しており(これを呼び出して物事をきれいにする方法はありません)、プロシージャと同じパラメータが含まれています。次に、データベースに接続し、クエリ結果を返します。次に例を示します。 public int DeleteRecord(int recordId) { recordId.RequireThat("recordId").NotZeroOrLess(); List<SqlParameter> parameters = new List<SqlParameter>(); parameters.Add(new SqlParameter { ParameterName = "@RecordId", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = recordId}); return this.ExecuteNonQuery("DeleteRecord", parameters.ToArray()); } 私は結果セットで何も意味のあることをしていないので、これはこのタイプのメソッドには完全に機能します。コマンドが機能したことを確認したいだけなので、非クエリの結果、つまり影響を受けた行だけを返し、その番号を使用してロジックを検証できます。 ただし、別のDALメソッドで、レコードをロードしたいとします。マイロード手順が実行されようとしているselectsテーブルの束と戻っに対してDataSet、私はビジネスを作成する必要があり、私のDALは使用方法内のオブジェクトかどうかと戦っていますDataSet、または私のビジネスオブジェクトの場合自身がちょうど持っている必要がありますLoad()取得するメソッドをDataSetDALから、そして基本的にそれ自身を埋めます。 DALを介してそれを行うと、Business Objectsのロジックが少なくなります(これは単なる選択ロジックですが、それでもロジックです)が、DALを少し混雑させて、本当にすべきでないことをしているように感じさせますやってる 皆さんはどう思いますか?

4
長い文字列のデータベースに最適なアプローチ
質問と回答をデータベースに保存する必要があります。質問は1〜2文ですが、回答は長くなり、少なくとも1段落、おそらくそれ以上になります。 私が今これを行うことを知っている唯一の方法は、SQLデータベースです。ただし、これまでのところ、これらのデータベースはこのタイプまたはサイズのデータ​​には使用されていないため、これが良い解決策であるとは思いません。これは正しい方法ですか、それともこのデータを保存するより良い方法がありますか?生の文字列を保存するよりも良い方法はありますか?

4
TimeZonesをデータベースに保存するためのベストプラクティスは何ですか?
データベース内の各住所のタイムゾーンの収集を開始したいと考えています。タイムゾーンを保存するためのベストプラクティスは何ですか?既存の住所レコードのタイムゾーンを取得するにはどうしますか? Microsoft SQLサーバー、.net mvc、C#を使用しています。任意の提案をいただければ幸いです。

5
パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?
パスワードがハッシュされて保存されている場合、パスワードをリセットしようとすると、パスワードが最後のパスワードと似ていることをコンピューターはどのように知るでしょうか?1つはハッシュ化され、元に戻すことはできないため、2つのパスワードはまったく異なりませんか?

8
プログラミングとデータベースクエリの統合[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 C ++やJavaなどのオブジェクト指向プログラミング言語の一般的なチュートリアルを検討してください。アカウント、注文、アイテムなど(またはほぼ同等のもの)を表すオブジェクトを使用して、簡単な注文処理システムを作成します。完全に直感的に理解できますが、ダイニングテーブルにいる象は、これらがインメモリオブジェクトであるため、現実的ではないということです。実際のシステムでは、アカウント、注文などはそもそもメモリに実際に存在するのではなく、データベースに存在し、メモリ表現はその短命のミラーにすぎません。 データベースを読み書きするために多くのコードを自分で書くこともできますが、それは退屈でエラーが発生しやすいため、実際に誰もそれを行いません。 誰もがORMを使用することになりますが、それらはそれ自体非常に問題が多いため、有名な論文では「ORMのベトナム」と呼ばれています。 プログラミング言語とデータベースがお互いを知らない別個のものであるのと同じくらい、オブジェクトとリレーショナルの不一致ではないと思います。推測:解決策は、プログラミング言語とデータベースクエリ言語の両方である単一の言語を使用することです。そのためには、言語ランタイムもデータベースであり、JITコンパイラもクエリオプティマイザーである必要があります。 それが私が見た問題の要約です。私の質問は、まだ誰かがいますか、 実際にこのような統合システムを構築しました 試みたが、そのような統合システムの構築に失敗した あなたがそのような建築をどのように進めるのか、またはなぜ、なぜそうでないのかというトピックに関する実質的なものを書かれている 問題を解決する別の方法を思い付きますか?

5
2人のユーザーが同じユーザー名で同じ瞬間に登録するのを防ぐ方法は?
何百万人ものユーザーが同時に登録しているため、登録をシリアル化できません。並行して登録する必要があります。 データベースにユーザー名「user1」が含まれていないとしましょう。2人のユーザーが「user1」に同時に登録しようとすると、それが受け入れられます。ただし、後で問題が発生します。これは起こらないはずです。 論理的な解決策を探しています。特定のものではありません。これを解決するためのアイデア。

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