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

MySQLは、オープンソースのリレーショナルデータベース管理システムです。

4
MySQLを本当にマスターするには?
PHPを使用しているのと同じ時間、mysqlを使用しています。ただし、PHPには10倍の自信があります。または他のプログラミング言語。しかし、私は本当にSQLを本当に把握しているようには見えません。つまり、選択、更新、挿入、削除、結合などを行うことができますが、より複雑なものになると失われます。より複雑なselect文の書き方、インデックスの適切な使用方法、使用するエンジンなど。 何らかの理由でmysqlのドキュメントを理解するのは難しいが、phpのドキュメントは理解しやすいと感じています。 多分私の頭脳は、プログラミングがそれ以来、SQLを混乱させるような方法で配線されていると思い始めています。知りません。ほとんどの人は、Regexが非常に混乱していると考えていますが、私にとっては、SQLステートメントを作成する方法よりも科学的に理にかなっています。誤解しないでください、私はSQLが嫌いではありません。本当に気に入っています。もっとよく理解したいだけです。 MySQLを本当にマスターするための最良/最速の方法は何ですか? 私が「マスター」と言うとき、私は教祖のグルを意味するのではなく、私が助けを必要とせずに私自身で私が尋ねる質問のほとんどを理解するのに十分賢いことを意味します。
13 mysql 

2
データベースの変更(挿入、更新、削除)が発生したときに、リアルタイムの通知を取得する方法は?
データベーステーブルを監視するダッシュボードを作成しています。データベースアクセスのみがあります(アプリケーション層はありません)。テーブルはかなり大きい(1000万行)が、急速には変化しない(1分間に100回の挿入/更新) テーブルが変更されたかどうかを確認するにはどうすればよいですか?私は毎秒データベースにアクセスしようとしますが、これは総当たり的なアプローチのようです... データベース:MySQL / Postgres

5
Web開発の役割のサーバーについて知っておくべきことは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 少しあいまいに聞こえるかもしれないので、もう少し説明してみます... 長年自営業の開発者であった後、私は現在商業的なWeb開発者の役割を探しています。サーバーとホスティングに関する私の唯一の経験は、FTPを介してアップロードし、CPanel / WHMを少し試してみることです。私が行っている役割は、Web開発のPHP、MySQL、HTML、CSSタイプの役割ですが、最近のインタビューでは、サーバーでの設定について質問を受けました。理想的ではありませんでした! 私以上のことを知らなければ、私が何を学ぼうとしているのかを正確に説明するのは難しいですが、それは基本的にウェブ開発者として知っておくべきサーバー要素だけなのでしょうか?Web開発者の場合、ファイルのアップロード以外にサーバーを扱うことはありますか?Subversion(SVN)やバージョン管理システムのようなものは、多くの場合、Web開発チームによってセットアップされていますか?

2
別のクエリで使用するために、クエリの結果を一時的に保存する方法は?
私はあなたが私を助けるかもしれないと思うこの問題を抱えています。 PS私はこれをどのように呼ぶかわからないので、誰かがより適切なタイトルを見つけたら、編集してください。 バックグラウンド このアプリケーションは、バス路線を検索するために作成しています。 バスラインは3桁の数字であり、一意であり、変更されることはありません。 要件は、ストップAからストップBまでの行を検索できることです。 ユーザーインターフェイスは、有効なストップ名のみを使用するようにユーザーにヒントを出すことにすでに成功しています。 要件は、ルートに直通線があるかどうかを表示でき、そうでない場合は2行と3行の組み合わせを表示できることです。 例: ポイントAからポイントDに到達する必要があります。プログラムは次のように表示されます。 ダイレクトラインADがある場合。 そうでない場合は、AC、CDなど、2行の代替コンボを表示します。 2行のコンボがない場合は、3行のコンボ(AB、BC、CD)を検索します。 もちろん、アプリはバスの路線番号とバスをいつ切り替えるかを表示する必要があります。 私が持っているもの: 私のデータベースは次のように構成されています(簡略化された、実際のデータベースには場所と時間などが含まれています): +-----------+ | bus_stops | +----+------+ | id | name | +----+------+ +-------------------------------+ | lines_stops_relationship | +-------------+---------+-------+ | bus_line | stop_id | order | +-------------+---------+-------+ どこlines_stops_relationshipのバスラインと停止の間の多対多の関係を説明します。 順序、ストップが1行に表示される順序を示します。すべての行が行き来するわけではなく、順序に意味があります(順序2のポイントAは順序1のポイントBの後に来ます)。 問題 ラインがルートを十分簡単に​​通過できるかどうかを確認します。両方のポイントを正しい順序で通過する単一の行を検索するだけです。 2/3行のコンボがあるかどうかを確認するにはどうすればよいですか?出発地の停留所と目的地の停留所に一致する行を検索し、それらの間に共通の停留所があり、ユーザーがバスを切り替えることができるかどうかを確認しようと考えていました。その停止をどのように覚えていますか? 3行のコンボはさらにトリッキーです。ソースの行と宛先の行を見つけましたが、次に何をしますか?ストップが2つある行を検索しますが、繰り返しますが、ストップをどのように覚えていますか? tl; dr クエリの結果を覚えて、再び使用できるようにするにはどうすればよいですか?これを単一のクエリ(1行のルートのクエリ、2行のクエリ、3行のコンボのクエリ)で達成したいと考えています。 注:誰かが私が持っているものとはまったく異なるアプローチを提案するかどうかは気にしませんが、私はどんな解決策も受け入れています。 …
12 php  mysql  routing 

3
MySQLデータベースでリレーショナルデータをバージョン管理するためのパターン?
ユーザーがレコードを編集し、それらのレコードの過去のバージョンを表示できるプロジェクトのアプローチを見つけようとしています。リストを使用した、簡単なスキーマの例を次に示します。 TABLE list ( id int auto_increment primary key, user_id int, title varchar(255) ); TABLE list_tasks ( id int auto_increment primary key, list_id int, title varchar(255), order int, is_complete tinyint ); したがって、ユーザーがリストにアクセスして、リストにいくつかの編集を加え(タスクの追加または削除、タスクの並べ替え、完了のマーク付け、名前の変更など)、保存します。この時点で、リストとタスクの「バージョン2」を生成し、以前のバージョンを表示できるようにしますが、リストにアクセスするときは常に最新バージョンを取得します。 MySQLデータベースでこのようにバージョン管理データを処理するための一般的なアプローチ/設計パターンはありますか?
12 mysql  versioning 

5
コードで作業を行うよりもRDBMSに作業をオフロードする方が適切なのはいつですか?
さて、私はそれに対処します:私はデータベースよりも優れたコーダーであり、「ベストプラクティス」についての考えは、SQLクエリとSQLクエリで「単純な」計算を行うというテーマのどこにあるのだろうかと思っています。このMySQLの例のようなコード(私はそれを書いていません、私はそれを維持する必要があります!)-これはユーザー名と、最後のイベントの時点でのユーザーの年齢を返します。 SELECT u.username as user, IF ((DAY(max(e.date)) - DAY(u.DOB)) < 0 , TRUNCATE(((((YEAR(max(e.date))*12)+MONTH(max(e.date))) -((YEAR(u.DOB)*12)+MONTH(u.DOB)))-1)/12, 0), TRUNCATE((((YEAR(max(e.date))*12)+MONTH(max(e.date))) - ((YEAR(u.DOB)*12)+MONTH(u.DOB)))/12, 0)) AS age FROM users as u JOIN events as e ON u.id = e.uid ... コードで「重い」リフティングを行うことに比べて: クエリ: SELECT u.username, u.DOB as dob, e.event_date as edate FROM users as u JOIN events …
12 php  mysql 

1
3の最大多重度で原点から外側にエッジと頂点を生成するアルゴリズム
私は、宇宙が非常に大きくなる(基本的には無限に大きくなる)Webサイト用の2Dゲームを作成しています。最初は、宇宙は原点(0、0)から等しい距離にある6つの星で構成されています。私のタスクは、相互に接続する「パス」(エッジ)を持つより多くの星を生成できるようにすることです。これらの制限を満たすアルゴリズムをどのように設計できますか: 星は外側にランダムに生成されます。(たとえば、新しい星の(x、y)座標は、(0、0)からすべての方向にゆっくりと外側に移動し、できれば螺旋状になります) エッジは交差しません。 多少の違いはあるはずですが、新しい星は他の星に近すぎたり近すぎたりしてはなりません。(たとえば、最小半径が必要です) スター/ポイントの多重度が3を超えることはできません。 このすべてがデータベースに保存されることを考えると、アルゴリズムのコストが高すぎることはありません。言い換えれば、O(n)の複雑さを実現したいと考えています(これが実現可能かどうかはわかりません)。 基本的に、私が目指しているのは、星がグラフ上の点であり、星間の移動がそれらの星の間のエッジで描かれている渦巻き状の銀河です。 解決する必要がある特定の手順は次のとおりです。 まだ3の多重度を持たない他の星の近隣に点をランダムに生成します。 エッジの競合を生成しない3の多重度をまだ持たない最初の星を見つけます。 星がx単位の最小距離にある場合、2点間にエッジを作成します。 解決策を探してみましたが、数学のスキル(およびグラフ理論の知識)には多くの作業が必要です。また、この問題に関するリソース/リンクは大歓迎です。 ここに私が考えていたいくつかの擬似コードがありますが、これがうまくいくかどうかはわかりません。 newStar = randomly generated (x, y) within radius of last star from origin while(newStar has not been connected): for (star in the known universe): if(distance between newStar and star > x units): if(star has < 3 multiplicity): …

1
ソーシャルネットワーク通知システム
バックグラウンド 私はいくつかのソーシャルネットワーキング機能を含むクライアント向けのアプリに取り組んでいます。私はもともとモバイルフロントエンドを開発していましたが、バックエンドの開発も担当する状況でした。 一般的な背景として、私たちのシステムでは、ソーシャルネットワークから期待されるように、ユーザーが他のユーザーをフォローし、フォローしているユーザーに関する通知を受け取ることができます。注意すべき点は、ほんの数サブセット(せいぜい数百人)のユーザーのみがフォローできることであり、ほとんどのユーザーベースはこれらの個人の少なくとも1人をフォローしていると予想されます。 UI側には、番号が付いた通知ボタンがあり、ボタンをクリックすると通知画面に移動します。 問題 私は、通知を実装するための戦略と、データベースに1つ以上の通知テーブルを作成するために見つけたほとんどのリソースを調査してきました。(私が好む例はここで受け入れられた答えです:https : //stackoverflow.com/questions/9735578/building-a-notification-system)。 私を後押ししているのは、通知に関するほとんどのデータベース駆動型の戦略では、各フォロワーの通知ごとに行を挿入する必要があるということです。したがって、1,000人がSallyをフォローしている場合、対応するテーブルに1,000行を挿入します。それはスケーラブルですか?数万人または数十万人のユーザーがサリーをフォローしていて、彼女が1日に数十の投稿を作成している場合はどうなりますか? 私の元のアイデアはクエリですべてを処理することでした:通知ボタンの数は、最後に通知画面にアクセスしたときより最近投稿されたコンテンツの行数を要求することによって取得され、個々の通知はより詳細なクエリから生成されます通知画面にアクセスしたとき。このアプローチでは、書き込みや追加のストレージは必要ありませんが、柔軟性がなく、サーバーをかなり難しくします。 セットアップ (前の開発者によって確立された)バックエンドは、CodeIgniterとMySQLデータベースを使用します。現在、くだらないGoDaddy共有ホスティングアカウントで実行されていますが、本稼働に入る前にアップグレードされると思います(希望ですか?)。ホスティングパッケージは、ユーザーの増加に合わせてスケーリングされます。 現在、私たちのフロントエンドはモバイルアプリのみですが、後でウェブサイトも構築する予定です。現時点では、サーバーから通知に関するリアルタイムのプッシュ更新を取得することに関心はありません。 補遺 私はバックエンドに特化しておらず、私はその部門の頭の中にいます。クライアントはそれを知っており、私はこの種のプロジェクトの範囲を説明するために最善を尽くしましたが、現時点では他の誰もプロジェクトに取り組むことを信頼しないことを明確にしています。テスターの追加を開始する前に、あと1か月の作業が必要であり、あらゆる種類のパフォーマンスメトリックを取得できます。ユーザー数や今後5年間に使用するハードウェアを実際に見積もることはできませんが、クライアントは数十万人以上のユーザーを望んでいると思います。 これがここに投稿される問題の具体的な内容であることを願っています。必要に応じて調整できます。ご不明な点がある場合や、重要な詳細を省略している場合は、お問い合わせください。 tl; dr すべてのユーザーが同じ数百人の何人かしかフォローしていない場合、データベース主導の通知システムは長期的なスケーラビリティにマイナスの影響を及ぼしますか? フォロワーごとに通知ごとに個別の通知行を必要とせずに、通知をデータベース主導にする方法はありますか? 完全にクエリ駆動型の通知システムはスケーラブルですか、それともDBにデータを書き込まない以外に利点がありますか? 私はこれを早すぎると思いすぎていますか?クライアントが限られた予算であり、最終製品が人気があるかどうかまだわからないので、今のところ機能するものを構築するだけで問題が発生した場合に最適化を検討できますか?

2
データベースの正規化とスキーマの透過性のどちらを優先しますか?
新しいコード要件が古いコードベースに浮上しました。これにより、以前は直接関連していなかった2つのユーザークラス(完全に異なるスキーマの異なるテーブルに格納されている)間の直接(内部)通信が可能になり、残念ながら、コードはほとんどオブジェクト指向に対応していません。あまり設計されていないため、親クラスはありません)。この機能を考慮しなかったこの古い設定にバッグを掛けるつもりなので、PKの衝突がないという保証はありません。 したがって、解決策は明白なようです。火で殺し、混乱したマッピングテーブル全体を書き換えます。マップを実装するための可能な方法については2つの方向性がありますが、私はDBAではないので、見逃した長所と短所があるかどうかはわかりません。 抽象化を明確にするために、異なるユーザーデータの3つのグループを検討してください:教授、管理、学生(いいえ、これは宿題ではありません。約束!) マッピング1 (professor_id、admin_id、student_idは、それぞれのテーブルへの外部キーです) | mailing_id (KEY) | professor_id | admin_id | student_id | ------------------------------------------------------- | 1001 | NULL | 87 | NULL | | 1002 | 123 | NULL | NULL | | 1003 | NULL | NULL | 123 | このアプローチの+/-は、短所に対してかなり重いようです: 行ごとに2つの「無駄な」フィールド 2NFに違反 異常を挿入/更新する脆弱性(0-1フィールドのみがNULLに設定されている行など) ただし、プロにはメリットがないわけではありません。 マッピングは単一のルックアップで実行できます mailing_idから特定のユーザーの「ソース」データを簡単に特定 …

7
スケーラビリティについて考え始めるのはいつですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 面白いけどひどい問題があります。新しい(iPhone)アプリを起動しようとしています。これは、自分のカスタムバックエンドで実行されるターンベースのマルチプレイヤーゲームです。しかし、私は立ち上げることを恐れています。 どういうわけか、私はそれが何か大きなものになるかもしれないと思います、そしてその人気は私の貧しい孤独な単一サーバー+ MySQLデータベースを殺すと思います。 一方では、それが成長している場合は、準備を整えて、スケーラブルなインフラストラクチャーをすでに準備しているほうがよいと考えています。 一方、私はそれを世界に送り出し、何が起こるかを見たいと思っています。 私は「時期尚早な最適化がすべての悪の根源である」などの記事をよく読んだり、ツールを手元に置いて今すぐキラーゲームを構築し、後でスケーラビリティなどの他のことについて心配するべきだと言っています。 私はこれについて専門家やこれを経験した人からこれについていくつかの意見を聞きたいです。ありがとう!

9
MysqlまたはPostgreSQLを使用している大規模な銀行はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 銀行の最大規模はOracleを使用すると常に思っていました。ただし、MysqlやPostgreSQLの代わりにOracleを実際に使用している証拠はなく、誰もその秘密を知りません。 彼らが実際に何を使用しているのか?Mysqlを使用して何百万ものトランザクションが発生するATM /銀行システムを構築できますか?PostgreSQLを使用できますか?または、Oracleのみを使用する必要がありますか?

4
C ++とMySQLでWebアプリを構築することには、概念的な欠点がありますか?
私は、非常に興味深いプロジェクトを継承しました。このプロジェクトでは、既存のソフトウェアを取得してSaaS Webアプリに変換する良い機会があります。プロジェクトが継承されるため、コードベース/フレームワークはすでにC ++およびMySQLとして定義されています。アプリ自体がコンパイルされ、Windows Server上でEXEとして実行されます。UIはWebベースであり、アプリは一種のサーバーとして機能します。私が最近のWebアプリについて知っていることから、これはおそらく珍しい選択です。最近では、ほとんどの人がPHPフレームワークまたはRuby on Railsを選択しているようです。確かにそれは私がこの主題についてブログを読んで得た印象です。それで、MySQLに裏打ちされたC ++ EXEがWebアプリの強固な基盤であるかどうか、または別の方法でビルドする必要があるかどうかを知りたいと思います。

2
任意のサイズのデータ​​に対して、BLOBはvarcharよりも効率的ですか?
データベースをセットアップするときは、かなり長い可能性のあるデータに最も効率的なデータ型を使用したいと思います。現在私のプロジェクトは、曲のタイトルとその曲に関する考えを保存することです。一部のタイトルは5文字または100文字を超える場合があり、思考はかなり長く続く可能性があります。 8000に設定されたvarcharを使用するか、blobを使用する方が効率的ですか?blobはvarcharと同じですか?保持されているものに関係なく割り当てられたセットサイズがありますか?それとも単なるポインタであり、実際にはテーブル上の多くのスペースを使用しませんか?KBでBLOBの特定のセットサイズはありますか、それとも拡張可能ですか?
9 mysql 

3
データベース(MySql)で機密データを分離する方法
ユーザーの個人的な病気に関する情報を含むデータベースを設計する必要があります。 DBのテーブルの列を実装するためのアプローチは何ですか?情報を暗号化する、2つの異なるDB内でデータを分離する、1つは機密データ用、もう1つは機密データ用ではない、または両方または別のアプローチですか?

6
私の場合、MongoDBは正しい選択ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 3つの主要な部分で構成されるWebアプリで構成される、Railsで最初の実際のプロジェクトを構築します。 データベースを使用しない静的部分 各ユーザーの行は同じフィールドを持つため、データベースを必要とし、MySQLを使用できるユーザー登録部分 ユーザーがコレクション内のアイテムを作成、整理、編集し、他のユーザーと共有できる「アプリ」 いくつかのアイテムタイプがあり、それぞれに異なるオプションがあります。たとえば、次のオプションを持つ「ビデオ」アイテムがあるとします。 id ユーザーID collection_id 題名 プラットフォーム(埋め込まれている場合) URL(埋め込まれている場合) ファイル名(アプリでホストされている場合) ファイルサイズ(アプリでホストされているID) 「マップ」アイテム: id ユーザーID collection_id 題名 プラットフォーム(Googleマップ、Bingマップ...) ロケーション url 地図のサイズ ユーザーがMySQLをアイテムに使用している間、各アイテムが別のアイテムとは異なるオプションを必要とする可能性があるため、MongoDBの柔軟性が役立つ場合があります。 これまで私は常にPHPとMySQLを使用してきました(常に小規模なプロジェクトでは共有ホスティングを使用しています)。スケーラビリティは私にとってまったく新しい言葉です。 学ぶ時間はありますが、1か月くらいで具体的なことができるようになりたいです。 私はMongoDBとNoSQLとRDMSとMySQLについてたくさん読んだので、それを試した後、MongoDBがどのように機能するかが好きだと言っておく必要があります。 私の状況では何をしますか?どうして? スケーラビリティについて、MongoDBに問題がある可能性はありますか?はいの場合(DBサイズに関して)、これらの問題によりアプリが大幅に遅くなる可能性がありますか? 編集:アプリの仕組み 多くの人がこれを私がアプリをどのように機能させたいかを尋ねたので: ユーザーがサインアップ 彼はログインしています 彼は無限のアイテムを作成できる彼の最初のコレクションisideを作成します アイテムにはさまざまなタイプがあり、タイプごとに異なるデータをデータベースに保存する必要があり、アイテムのタイプを追加または変更できます ユーザーはその中に他のコレクションやアイテムを作成できます。 そのため、コレクションとその内部のアイテムのCRUDがあり、各コレクション/アイテムは特定のユーザーに参照されます MySQLの主な問題は、柔軟なスキーマがないことです。これを解決する方法があります(回避策?)? NoSQLについて考えるときの唯一の疑問は、結合に関するものです。たとえば、特定のコレクションがあり、コレクション内のID = user_idフィールドを持つユーザーに関連するデータを取得したい場合 編集:MySQLを使い続けるためのアイデア 「items」テーブルに、オプション設定を含むフィールドを作成します。各設定は|で区切られます。または別のシンボル。 次に、各アイテムのオプション設定の構造をどこかに保存します。たとえば、「ノート」アイテムタイプには、MySQLからデータを取得するときに、2つのオプション設定「color」と「strange_setting」が必要です。オプション設定のフィールドを配列の最初の項目が「色」用であることを認識する配列など。 どう思いますか?その解決策に問題がありますか?他にアイデアはありますか?

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