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

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

7
複数のデータベース呼び出しは、Web APIのネットワーク呼び出しでは本当に重要ですか?
私の雇用主の1人で、REST(しかしSOAPにも適用されます)APIに取り組みました。クライアント(アプリケーションUI)は、API(Web(一般的な運用展開ではLAN)経由で)を呼び出します。APIはデータベースを呼び出します。 私たちの議論で繰り返されるテーマの1つはパフォーマンスです。チームの一部の人々は、パフォーマンスのために1つのAPI呼び出しから複数のデータベース呼び出し(通常は読み取り)を行うべきではないと考えています。各API呼び出しが(正確に)データベース呼び出しを1つだけ持つように最適化する必要があります。 しかし、それは本当に重要ですか?UIはAPIに対してネットワーク呼び出しを行う必要があることを考慮してください。それはかなり大きいです(ミリ秒単位)。データベースは、メモリ内に物事を保持し、読み取りを非常に迅速に実行するように最適化されています(たとえば、SQL ServerはすべてをRAMにロードして保持し、可能な限りすべての空きRAMを消費します)。 TLDR:すでにLAN経由でネットワーク呼び出しを行っているときに、複数のデータベース呼び出しを心配することは本当に重要ですか?もしそうなら、なぜですか? 明確にするために、私は大きさについて話しています-それは仕様(マシンハードウェア、APIとDBの選択など)に依存することを知っています桁違いに少ない呼び出し、実際に問題ですか?それとも、これ以上の問題がありますか? 編集:後世のために、これらの状況下でデータベース呼び出しを組み合わせてパフォーマンスを改善する必要があると主張するのは非常にばかげていると思います-特にプロファイリングがない場合。ただし、これを行うかどうかは私の判断ではありません。これがWeb API呼び出しを最適化する正しい方法であると考える背後にある根拠を知りたいです。

6
HTTPセッションまたはデータベースアプローチ
ショッピングカートの設計に取り組んでおり、セッションまたはデータベースのいずれかにショッピングカートを保存する必要がありますが、どちらのアプローチが最適かはわかりません。 ユーザーはログインしておらず、カートに商品を追加していません(匿名ユーザー) ユーザーがログインし、カートに製品を追加しています。 ユーザーがログインせずにWebショップにアクセスして製品を追加するだけでなく、チェックアウトプロセスに行かない可能性が高いため、最初のケースは私を混乱させます。 ただし、ショッピングカートを作成して保存するには、このユーザーのショッピングカートを作成する必要があります。2つのオプションがあります。 ユーザーが製品を追加するときに、データベースにカートを作成し、このカートをこのユーザーに関連付けます。ログインした瞬間に、このカートをログインしているユーザーに移動します。 ユーザーがログインしてデータベースにカートを作成し、ログインしたユーザーをこのカートにユーザーと関連付けた場合、カートを作成し、製品を追加してセッションに保存します。 データベースベースのカートシステムとセッションベースの両方に肯定的側面と否定的側面があることを知っていますが、次の点を考慮するためにどちらが最善のアプローチであるかはわかりません 拡張性 柔軟性 拡張性 アプリケーションは速度に注意する必要があります この側面に関する入力を探して、パスを決定します。

2
これらのSQLの概念は、初心者、中級者、または上級の開発者向けですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は最近SQLを学び、MySQL / PostgresとすぐにOracle DBで練習しています。また、データベースの「ロードマップ」調査のためにWebを検索しましたが、残念ながらそれを見つけることができませんでした。 特定のデータベースの概念が初心者から中級者から上級者に至るまでの規模と規模を理解する必要があります。私はほとんどの場合、リレーショナルデータベースについて考えています。 初心者->中級->上級者の進行において、以下にリストされているスキルをどのようにレイアウトするかを説明してください。 Where句 構文を更新する 参加する ステートメントの変更と作成 一時テーブル カーソル インデックス 外部キー 制約 取引 サブクエリ ピボット 集計関数 プロファイリング OLAPおよびOLTP トリガー 実行計画 実行のヒント パフォーマンスカウンター 正規化

3
PHPとMySqlで金額を処理する方法は?
MySQLデータベースの上にPHPで記述されたレガシーコードの巨大な山を継承しました。私が気づいたのは、アプリケーションdoublesがデータの保存と操作に使用することです。 今、私doubleは丸め誤差のために金銭的操作に適していない方法について言及している多くの投稿に出会いました。しかし、PHPコードで金銭的な値を処理し、MySQLデータベースに保存する方法の完全なソリューションにまだ出会っていません。 PHPで具体的にお金を処理する場合のベストプラクティスはありますか? 私が探しているものは: データベースにどのようにデータを保存する必要がありますか?列タイプ?サイズ? データが通常の加算、減算でどのように処理されるべきか。乗算または除算? いつ値を丸めるべきですか?ある場合、どの程度の丸めが許容されますか? 大きな金額と低い金額の処理に違いはありますか? 注:日常生活で金銭的価値に遭遇する可能性 のある非常に単純化されたサンプルコード(単純化のためにさまざまなセキュリティ上の懸念は無視されました。もちろん、実際の生活ではこのようなコードは使用しません): $a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double? $b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be less than 1 $valueToBeStored= $a * $b; //--> any hint here is welcomed $valueFromDatabase= $row['price']; //--> price …

5
データベースを設計するのはプログラマの仕事ですか?
私は過去6年間プログラマーでした。私のキャリアを通じて、私は多くのWebアプリケーションに取り組んできました。 ほとんどの場合、データベースが必要になったとき、それは私たち(プログラマー)に与えられたか、作業するレガシーデータベースがありました。そうでない場合は、データベースを独自に作成および設計する必要がありましたが、それほど難しくはありませんでした。 しかし、プログラマーとして、データが非常に重要で複雑なデータモデルを使用して厄介な要件を持つ新しいアプリケーションを構築する必要がある場合、データベース全体をゼロから作成することになっていますか? 専門家がそれを成し遂げることは、アプリと会社の最大の利益ではありませんか? 私はデータベースの設計から逃げようとはしていませんが、それを正しく行うことはとても重要なことです。

4
自分のデータが本質的にリレーショナルまたはオブジェクト指向であることを知るにはどうすればよいですか?
これらの行を読むだけで データが本来オブジェクトである場合は、オブジェクトストア(「NoSQL」)を使用します。リレーショナルデータベースよりもはるかに高速です。 データがリレーショナルデータである場合、リレーショナルデータベースのオーバーヘッドはそれだけの価値があります。 から- http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern それで、データが本質的にリレーショナルであるかオブジェクト指向であるかをどのようにして知ることができますか?

9
開発者にはどのくらいのデータベースアクセスが必要ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 そのため、私は開発者としてさまざまな職場で働いてきましたが、データベースへのアクセスレベルはさまざまです。通常、本番データベースへのアクセス権はありません。 ほとんどの場合、テストデータベースにアクセスできますが、さまざまです。データベースとデータを自由に変更できる場合もありますが、通常は他の方法もあります。私はデータへの読み取りアクセス権しか持っていないように。 私はDBAチームがデータベースを管理する1つの場所で働いていましたが、「検査」するSQLスクリプトを含むフォームを送信しない限り、まったく変更できませんでした。彼らは通常、プロジェクト自体とはあまり関係がなかったので、ほとんどの場合、F5を押すだけでした。 正直なところ、なぜprodをロックダウンする必要があるのか​​は理解できますが、開発環境とテスト環境でデータベースにできるだけ多くアクセスすることを好みます。ほとんどの開発者は、データベースをどのように使用するかを合理的に把握できていると思います。しかし、私は意見を聞きたいのですが?開発者にはどのくらいのデータベースアクセスが必要ですか?そこに何かを壊さないと信頼できるでしょうか?

4
データベースでの作業中にオブジェクト指向とテスト可能性を維持する
データベースを操作しながら、ユニットのテストを可能にするOOP戦略にはどのようなものがありますか?Userクラスがあり、本番環境がMySQLに対して機能しているとします。PHPを使用してここに示す2つの可能なアプローチがあります。 load()およびのインターフェイスで$ data_sourceを渡し、save()データのバックエンドソースを抽象化します。テスト時には、別のデータストアを渡します。 $ user = new User($ mysql_data_source); $ user-> load( 'bob'); $ user-> setNickname( 'Robby'); $ user-> save(); データベースにアクセスし、結果行をユーザーのコンストラクターに渡すファクトリーを使用します。テスト時には、$ rowパラメーターを手動で生成するか、UserFactory :: $ data_sourceでオブジェクトをモックします。(変更をレコードに保存するにはどうすればよいですか?) class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; …

7
交差テーブルを作成する代わりにNULL入力可能な外部キーを使用することの欠点
次のERダイアグラムがあるとします。 ここSchoolでStudent、inの外部キーを使用して関係を表す場合、NULL値を持つことができます(a Student に属する必要はないためSchool)。たとえば、 したがって、正しい方法(読んだ内容に基づいて)は、リレーションシップを表す交差テーブルを作成することです。次に例を示します。 この方法でNULLは、表に値を含めることはできませんSchool_has_Student。 しかし、交差テーブルを作成する代わりにNULL入力可能外部キーを使用することの欠点は何ですか? 編集: 誤って(school_id、student_id)をSchool_has_Studentテーブルのプライマリキーとして選択したため、多対多の関係になりました。正しい主キーは次のstudent_idとおりでした。

3
ToDoリストのデータベーススキーマ
PHP、MySQL、Jqueryテンプレート、JSONを使用して、非常に簡単なToDoリストアプリケーションを作成しようとしています。しかし、私のスキーマはJSONで物事を複雑にしているようです。 それを行う最良の方法は何ですか? アイテムを含む各リストの新しいテーブル。 または リスト用のテーブル、および何らかの形で結合されたアイテム用のテーブル?私はこれを試してみましたが、それを行う正しい方法のように思われないからですか 例http://jsfiddle.net/Lto3xuhe/

2
すでにグラフデータベースを使用している場合、ElasticSearchを使用するのはなぜですか?
ElasticSearchとグラフデータベースの比較について、Webで詳細な説明を見つけることはできません。 どちらもデータを横断するように最適化されています。 ElasticSearchは分析用に最適化されているようです。 ただし、Neo4jは、インデックスと一部のフルテキスト機能を管理するLuceneにも基づいています。 すでにグラフデータベースを使用しているのにElasticSearchを使用するのはなぜですか? 私の場合、Neo4jを使用してソーシャルネットワークを構築しています。 ElasticSearchがもたらす本当のメリットは何ですか? 更新---------- 私はこの段落を見つけました: elasticsearchが役立つ無数のケースがあります。いくつかのユースケースは、他のユースケースよりも明確にそれを要求します。次に、elasticsearchが特に適しているタスクをいくつか示します。 特定のフレーズ(「シェフのナイフ」など)に最も一致する製品説明を多数検索して、最良の結果を返す 前の例では、「シェフのナイフ」が表示されるさまざまな部門を分類します(この本の後半のファセットを参照) 「季節」のように聞こえる単語をテキストで検索する スペルミスを考慮しながら、以前に発行された検索に基づいて部分的に入力された単語に基づいて検索ボックスを自動補完する 大量の半構造化(JSON)データを分散方式で保管し、マシンのクラスター全体に指定されたレベルの冗長性を持たせる ただし、elasticsearchは前述の問題を解決するのに優れていますが、他の人には最適な選択ではないことに注意してください。リレーショナルデータベースが最適化されている問題の解決は特に苦手です。以下にリストされているような問題。 在庫に残っているアイテムの数を計算する 特定の月に送信されたすべての請求書のすべての明細の合計を計算する ロールバックサポートを使用してトランザクションで2つの操作を実行する 電話番号や内線番号など、指定された複数の用語にわたって一意であることが保証されているレコードを作成する Elasticsearchは一般に、品質による結果のスコアリングなど、データからおおよその回答を提供するのに優れています。elasticsearchは正確なマッチングと統計計算を実行できますが、検索の主なタスクは本質的におおよそのタスクです。 おおよその回答を見つけることは、elasticsearchと従来のデータベースを分離するプロパティです。そうは言っても、従来のリレーショナルデータベースは精度とデータの整合性に優れているため、elasticsearchとLuceneにはほとんど規定がありません。 おおよその回答が必要ない場合、ElasticSearchは既に使用されているグラフデータベースと比較して役に立たないと断言できますか?

4
リレーショナルデータベースがSQLクエリのみを受け入れるのはなぜですか?
私の知る限り、ほとんどのリレーショナルデータベースはquery、引数としてSQL文字列を受け取る関数を除き、クエリ用のドライバレベルAPIを提供していません。 私はそれができるとしたらどれほど簡単になると思っています: var result = mysql.select('article', {id: 3}) 結合されたテーブルの場合、少し複雑になりますが、それでも可能です。例えば: var tables = mysql.join({tables: ['article', 'category'], on: 'categoryID'}); mysql.select(tables, {'article.id': 3}, ['article.title', 'article.body', 'category.categoryID']) よりクリーンなコード、文字列解析のオーバーヘッドなし、インジェクションの問題なし、クエリ要素の再利用の容易化...多くの利点が見られます。 SQLを介したクエリへのアクセスのみを提供するように選択された具体的な理由はありますか?
15 database  sql 

2
Bツリーやその他のデータ構造は、ソリッドステートドライブの出現により廃止されますか?
現在、多くの(おそらくほとんどの)データベースアプリケーションは、Bツリーとバリエーションを使用してデータを格納しています。これは、このデータ構造がハードディスクの読み取り、書き込み、およびシーク操作を最適化するためです(これらの操作は、全体的な効率において重要な役割を果たしますデータベース)。 ただし、ソリッドステートドライブ(SSD)は従来のハードディスク(HDD)を完全に置き換える必要がありますが、Bツリーとバリエーションは時代遅れになり、ダイレクトアクセスメモリでより効率的に動作するデータ構造の余地ができます。もしそうなら、それらの構造は何になりますか?(例:ハッシュテーブル、AVLツリー)

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を使用できると考えるのは正しいですか?知っておくべき技術的な欠点はありますか?正しい選択をするのに役立つ経験(ネガティブまたはポジティブ)は何ですか? 更新:これを他のデータベースの否定的な判断と見なさないでください。それらはほとんどすべてが素晴らしい製品です。ここで私の考えを共有し、これについてのあなたの意見に興味を持っています。

4
データリーダー行を取得し、すべてのレコードを読み取らない場合、データベース接続は閉じられますか?
方法を理解しながらyieldキーワード作品を、私が出会ったリンク1とリンク2の使用を提唱StackOverflowの上yield returnDataReaderオブジェクトを反復処理しながら、をし、それは私のニーズに合ったとしても。しかし、yield return以下に示すように使用し、DataReader全体を反復処理しない場合、DB接続はいつまでも開いたままになるのか、疑問に思います。 IEnumerable<IDataRecord> GetRecords() { SqlConnection myConnection = new SqlConnection(@"..."); SqlCommand myCommand = new SqlCommand(@"...", myConnection); myCommand.CommandType = System.Data.CommandType.Text; myConnection.Open(); myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); try { while (myReader.Read()) { yield return myReader; } } finally { myReader.Close(); } } void AnotherMethod() { foreach(var rec in GetRecords()) { i++; System.Console.WriteLine(rec.GetString(1)); if …
15 c#  database  .net  resources 

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