タグ

DBに関するtasogare30のブックマーク (16)

  • 論理削除はなぜ「筋が悪い」か

    「論理削除が云々について - mike-neckのブログ」を読んで。 データベース設計において、「テーブルの書き換えをするな、immutableなマスタと更新ログによって全てを構成しろ」というこの記事の主張はモデリング論として全く正しい。 だが、残念なことに、ディスクやメモリが貴重な資源だった時代の技術であるRDBは、そのようなモデリングに基づいて設計されたデータベースには必ずしも適していない。 第一の問題は、RDBに対してなされる様々な「更新」(トランザクション)は不定形(どのテーブルをどのように修正するかはアプリケーション依存)だという点。不定形な「更新」を時系列にそってRDBに記録していくのは、設計と並走性の点において困難あるいは煩雑なコーディングが必要になる(というか、そのような「イベント」による「変化」はREDOログに書き、その更新された「状態」をテーブルに反映していくというのが

  • 我々(主語が大きい)は何故MySQLで外部キーを使わないのか

    外部キー便利!!! MackerelではPostgreSQLで外部キーあり そのレコードがあることが保証される 各テーブルのidにアプリケーションレベル(Mackerelの場合Scala)で型付けをするとなお便利 MemberID型、MonitorID型 → idで誤ったテーブルを引くとかがない 日のスキーマ CREATE TABLE `member` ( `id` INTEGER unsigned NOT NULL auto_increment, `earned_item_count` INTEGER unsigned NOT NULL DEFAULT 0, `name` VARCHAR(191) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4; CREATE TABLE `item`

  • 欠落したインデックスの検索

    欠落したインデックス機能は、データベースのテーブルとインデックス付きビューで欠落している、実装されていればクエリ パフォーマンスが向上するインデックスを見つけるために常に使用できる簡易な方法です。 このセクションの内容 欠落したインデックス機能について 欠落したインデックス機能のコンポーネントと、この機能を有効または無効にする方法について説明します。 欠落したインデックス情報を使用した CREATE INDEX ステートメントの記述 CREATE INDEX DDL ステートメントを記述するために、欠落したインデックス機能コンポーネントによって返される情報を使用するためのガイドラインとその例を説明します。 欠落したインデックス機能の制限事項 欠落したインデックス機能を使用する際の制限事項と制約事項について説明します。 関連するクエリ チューニング機能 クエリ パフォーマンスをチューニングす

    欠落したインデックスの検索
  • DBスペシャリストを認定する資格 OSS-DB技術者認定試験

    2018.12.11OSS-DB Silver出題範囲「運用管理 - インストール方法(initdbコマンドの使い方)」に関する例題解説を追加しました。 2018.12.10年末年始休業のご案内 Holiday Closing Notice 2018.12.08ビジネスパートナー制度説明会開催のお知らせ(12/11、12/18、1/8、1/15、1/22、1/29、2/5、2/12、2/19、2/26) 2018.12.07アカデミック認定校制度説明会開催のお知らせ(12/13、12/20、1/10、1/17、1/24、1/31、2/7、2/14、2/21、2/28) 2018.12.05『OSS-DB Exam Gold 技術解説無料セミナー』@東京 12/2(日)開催結果のご報告 2018.11.27OSS-DB Silver出題範囲「開発/SQL - SQLコマンド(SELECT文)

  • Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita

    まえがき データにIDを持たせたいとき、単純な方法としては、DBの提供するauto incrementを使う場合やUUIDを利用することがある。それぞれの方法の利点欠点は以下の通り。 データベースのauto incrementを使う場合 利点: 特別な実装が必要ない 欠点: DBを1台で運用するとデータベースがパフォーマンス・障害のボトルネックになる DBを二台にするとIDのユニークさや順序の保証が困難 UUID(v4)※1を利用する場合 利点: 分散環境で各々がIDを生成しても衝突しない IDを公開したくない場合に、推測されにくいIDを生成できる 欠点: 128ビット必要、DBのインデクシングやプログラミング言語で扱うときに不利なことがある IDから時間の情報が失われる、例えば2つのIDを比べてどちらが古い投稿か判断できない 世界の大企業がどうしてるか 調べてみると多くの企業がブログなど

    Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita
  • DML トリガーで inserted と deleted テーブルを使用して、変更を検査する方法について学習します。 - SQL Server

    適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance DML トリガー ステートメントによって、deleted と inserted テーブルという 2 つの特別なテーブルが使用されます。 SQL Server では、これらのテーブルを自動的に作成および管理されます。 これらの一時的なメモリ常駐型のテーブルを使用して、特定のデータ変更の影響をテストしたり、DML トリガー操作に条件を設定したりできます。 これらのテーブル内のデータを直接変更したり、これらのテーブルに対して CREATE INDEX などのデータ定義言語 (DDL) 操作を実行することはできません。 inserted と deleted テーブルについて DML トリガーでは、inserted テーブルと deleted テーブルは主に次のことを実行する

    DML トリガーで inserted と deleted テーブルを使用して、変更を検査する方法について学習します。 - SQL Server
    tasogare30
    tasogare30 2014/03/11
    >> deleted テーブルには、DELETE ステートメントと UPDATE ステートメントの実行で影響を受けた行のコピーが格納されます。
  • 今まで見たもっともクソなテーブル設計 - 何か着ていればいいよ

    あれは、僕がデータベースを扱ううち最初から3件目のプロジェクトだった。 C++のソースが難解で火を吹いているという話で、自分は低スキルの若造。火にくべるには丁度良い程度のやる気と責任感をもっていた。折悪く別のプロジェクトが終了した直後だったもので投入されたのでした。 現場で『DBからデータを吸い出すツールかSQLを作ってくれ』といわれ話をきくと他社が作ったDB定義がすこぶる使いづらいという。 ER図やDB定義を見せてくださいと言ったのだけど、そんなものは無いという返事。 今ならもうここら辺で逃げ出すところですが、当時は『ふーん。』てなもんでそういうこともあるのかくらいの軽い気持ちで考えていました。 で、プロジェクトの資料をあさりまくって何とかDB定義のようなものも見つけDBのデータを調査し始めたのですが何かがおかしい。 機能の数に比して異様にテーブル数が少ないのです。 ふと周りを見ると、皆

    今まで見たもっともクソなテーブル設計 - 何か着ていればいいよ
  • MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.3.2 ユーザーアカウントの追加

    アカウントを作成するためのステートメント (CREATE USER や GRANT など) を使用する。これらのステートメントを発行すると、サーバーによって付与テーブルへの適切な変更が行われます。 INSERT、UPDATE、DELETE などのステートメントを使用して、MySQL 付与テーブルを直接操作する。 アカウント作成のステートメントを使用する方が、付与テーブルを直接操作するよりも簡潔で、エラーの発生率も低いため、推奨される方法です。CREATE USER および GRANT については、セクション13.7.1「アカウント管理ステートメント」で説明されています。 アカウントを作成するためのもう 1 つのオプションは、GUI ツール MySQL Workbench を使用する方法です。または、MySQL アカウント管理の機能を提供する使用可能な複数のサードパーティープログラムのいずれ

  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
  • SQLite - Wikipedia

    SQLite(エスキューライト[2][3]、エスキューエライト[4][5]、なお、作者のHippはエスキューエルアイト(/ˌɛsˌkjuːˌɛlˈaɪt/[6][7][8])と発音している)は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) である。 サーバとしてではなくアプリケーションに組み込んで利用されるデータベースである[9]。 一般的なRDBMSと違い、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用することが特徴である。バージョン3.3.8からは全文検索のFTS1モジュールがサポートされた。その後 FTS2 - FTS3 と強化を続けバージョン3.7.4からはFTS4モジュールがサポートされている。 SQL92の機能の多くを実装 著作権を放棄しパブリックドメインに帰している サーバではなくライブラリ ライブラリは数百KB

    SQLite - Wikipedia
  • (ADO.Net)DataSetを使ったトランザクション制御 | old_3流プログラマのメモ書き

    (VB.Net)ADO.NetOLEDBのトランザクションで、SQL直書き(コマンドオブジェクトにSLQ文をセットする方法)でのトランザクションの方法をメモりました。 今回は DataSet で作られた TableAdapter を使ってトランザクションを行う方法です。 まず、複数のクライアントが同時にDBにアクセスし不整合になるのを防ぐため、排他制御の仕組みをとらないといけません。 Visual Studio で DataSet を使うとこの仕組みもどうやら簡単に出来るようです。 Visual Studio のサーバーエクスプローラからテーブルを DataSet のデザイナにドラッグすると勝手に DataTable と TableAdpter を作成してくれますが、この時点で勝手に更新時(Update句)に楽観的ロックがかかるようになってます。 下記図のようにテーブルアダプタの詳細を見

    (ADO.Net)DataSetを使ったトランザクション制御 | old_3流プログラマのメモ書き
  • http://dotnetfan.org/blogs/dotnetfanblog/archive/2007/09/12/2661.aspx

    tasogare30
    tasogare30 2009/11/26
    分かりやすいなぁ。
  • LINQ の式ツリー

    [このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。] LINQ では、IQueryable<T> を実装するデータ ソースを対象とした構造化クエリを表すために式ツリーが使用されます。 たとえば、LINQ to SQL プロバイダーは、リレーショナル データ ストアのクエリを実行するための IQueryable<T> インターフェイスを実装します。 C# および Visual Basic コンパイラは、そのようなデータ ソースを対象とするクエリを、実行時に式ツリーをビルドするコードにコンパイルします。 その後、クエリ プロバイダーは式ツリーのデータ構造体を走査し、データ ソースに適したクエリ言語に変換します。 式ツリーは、Expression<TDelegate> 型の変数に代入されるラムダ式を表すため

    LINQ の式ツリー
    tasogare30
    tasogare30 2009/11/26
    仕方ないから読むか……
  • How to: Use Expression Trees to Build Dynamic Queries (C# and Visual Basic)

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    How to: Use Expression Trees to Build Dynamic Queries (C# and Visual Basic)
    tasogare30
    tasogare30 2009/11/26
    あとで読……まない!
  • Expressionを使った動的なOR文の生成 - coma2n’s diary

    仕事でLINQ to SQLを使ってDBからデータを検索してくるアプリを開発していて、検索する値をスペースで区切った場合はOR検索するという仕様を実装する必要があった。 OR検索自体は以下のように論理演算子で条件をつないでいくだけ。 var result = from d in db.Document where d.FileName.Contains("値1") || d.FileName.Contains("値2") select d; こう書けるのは条件の数がわかっているからで、今回の場合は動的に条件が変わるためこの書き方はできない。SQLであれば単に文字列を連結していけばいいだけだけど、LINQの場合はそうはいかない。 なので、こういう時はExpressionを使うことになる(面倒くさいからあまりやりたくなかったけど)。ちなみに、AND条件の場合はWhereメソッドで連結すればいい

    Expressionを使った動的なOR文の生成 - coma2n’s diary
    tasogare30
    tasogare30 2009/11/26
    動的LINQライブラリ > "ならSQL書いとけよという気がしないでもない。" / まったくですわ
  • バージョン、エディション、および SQL Server の更新プログラム レベルとそのコンポーネントを確認する方法

    This article lists various builds or updates that are available for different versions of SQL Server. Original product version:   SQL Server Original KB number:   321185 Summary A downloadable version of an Excel workbook that contains all the build versions together with their current support lifecycle stage for 2005 through the current version is available. The Excel file also contains detailed

    バージョン、エディション、および SQL Server の更新プログラム レベルとそのコンポーネントを確認する方法
  • 1