タグ

dbに関するd_animal141のブックマーク (206)

  • NULL撲滅委員会

    序文 全国1千万の DB エンジニアの皆様、こんにちは。NULL撲滅委員会極東支部長のミックです。皆様におかれましては日々、DB の構築、SQL 作成、パフォーマンス・チューニング、番データの入ったテーブルをいともあっさり DROP した新入社員の尻拭いと、獅子奮迅の働きにてチームを支えておられるであろうと存じます。さて、日私が一筆啓上しましたのは、NULL撲滅基宣言への皆様の参加を募りたく思ったからです。 NULL というこの面妖な怪物の質の悪いところは、最初は私たちの感覚に心地よく合致すると感じられるため、ごく自然にするっとシステム設計の中に忍び込んできて、気が付いたときにはシステムをどうしようもなく複雑で、非効率的で、直観に反する動作をするに至らしめ、開発も運用も困難なものにしてしまうところにあります。ゆえに、NULL のもたらす脅威から身を守るには、まず第一にその正体をよく知

  • カラム型データベースはなぜ集計処理が高速で、トランザクションが苦手なのか。インメモリとカラム型データベースの可能性を調べる(その4)

    カラム型データベースはなぜ集計処理が高速で、トランザクションが苦手なのか。インメモリとカラム型データベースの可能性を調べる(その4) 現在主流となっているOracleSQL Server、DB2などのリレーショナルデータベースは事実上すべて、行(ロー)指向で内部の処理を行っています。一方で、最近急速に注目されているのが、列指向で内部処理を行い、大量データの集計や分析処理に優れた「カラム型データベース」(あるいはカラム指向データベース、カラムナーデータベース)です。 カラム型データベースはSybase IQやNetezza、Verticaなどデータウェアハウス専用のデータベースで主に採用されています。また、SQL Serverには「ColumnStore Index」、Oracle Exadataには「Hybrid Columnar Compression」と呼ばれるカラム型データベースの

    カラム型データベースはなぜ集計処理が高速で、トランザクションが苦手なのか。インメモリとカラム型データベースの可能性を調べる(その4)
  • ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った

    それなりの規模のサービスを運用していると、不可解なエラーに遭遇することはよくあるものです。その中でもデータベース関連のエラーは一見難解な問題に見えるかもしれませんが、原因調査に役立つ情報をさえ出力すればたいていの場合は容易に原因を特定できるものです。というわけで、Rails でよく遭遇するエラーの調査に役立つ情報を出力する gem を作成しました。 activerecord-debug_errors 現在次のエラーをサポートしています。 ActiveRecord::LockWaitTimeout (MySQL のみ) ActiveRecord::Deadlocked (MySQL のみ) ActiveRecord::ConnectionTimeoutError 以下、具体的な例を用いてどのような情報が表示されるか説明します。 ActiveRecord::LockWaitTimeout Ac

    ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った
  • データベーススペシャリスト試験に独学で合格した俺から、マル秘勉強法を教える!

    データベーススペシャリスト試験の概要(独学の人はもう一度確認しよう!)データベーススペシャリストの「試験概要」と「合格率」や難易度を紹介していきます。 「もう知っているよ!」という方は、飛ばして問題ありません! それではどうぞ! 試験の説明 データベーススペシャリストの試験は、情報処理推進機構(IPA)が行っている国家試験です。 経済産業省により認定されており、四段階のレベルによって分けられています。 データベーススペシャリスト試験はその中でも、レベル4の最高難易度に設定されています。 出典:情報処理推進機構(IPA) 上の写真の「高度な知識・技能」の部分がレベル4に当たる試験です。 情報処理推進機構(IPA)では下記のような人物を対象にしているといった記述があります。 高度IT人材として確立した専門分野をもち、データベースに関係する固有技術を活用し、最適な情報システム基盤の企画・要件定義

  • オレ的EXPLAIN技を語っちゃうゾ - Qiita

    メリークリスマス 記事はPostgreSQL Advent Calendar 2021の25日目です。今年も面白い記事がたくさん揃いましたね!!! さて、みなさん今年のPostgreSQLライフはどんな感じでしたでしょうか? 私はというと、なんだかチューニングばっかりやってました。1案件でいろいろお手伝いすることはまあまああったのですが、複数から次々チューニングの相談をもらって、歴代継承者の個性を発現したデクくんのごとく駆け回ったのが今年のハイライトです。 (この綱渡り感、、、伝われ!!!) 俺たちは雰囲気でチューニングしている 今回上手くいったけど、あの時たまたまひらめいた1案をぶつけてみたら効果でたのであって、次善の策なんてなかったけど??って毎回思ってるから、雰囲気でやっていると思う、マジで。コミュニティのノリだと笑いが起きていいんですけど、少しでも勝率を上げるために、若手の前でド

    オレ的EXPLAIN技を語っちゃうゾ - Qiita
  • 自作DBを始めたい人におすすめの本 - salachike:blog

    この記事は、慶應理工アドベントカレンダー2021の20日目の記事です。 カレンダー全日埋まってすごい 🎉🎉 adventar.org 「Database Design and Implementation」という簡素なDBをスクラッチで作っていくに取り組んだので、その読了エントリです。 Database Design and Implementation: Second Edition (Data-Centric Systems and Applications) (English Edition) 作者:Sciore, EdwardSpringerAmazon こんな人におすすめ MySQLやPostgreSQLを使った経験はあるが、DBの理論やその実装はあまり詳しくない人に特におすすめです。特に自作〇〇*1に興味がある人は間違いなく楽しめると思います。単純にに紹介されている理論

    自作DBを始めたい人におすすめの本 - salachike:blog
  • イミュータブルデータモデルの極意

    6. Data / Inform / Information Inform: “to convey knowledge via facts (事実によって知識を伝える)” Data (Factの集合) Information 選択・加工して知識を取り出す Value of Values (Rich Hickey) 業務システム構築におけるデータモデリング (和田省二) 7. Dataを場合分けする Event (コト) Resource (モノ) 日時属性をもつ 日時属性をもたない 非対称性 対称性 ある一時点 ライフサイクルがある 一時点の事実の記録なので、属性は変わる ことはない。 ライフサイクルにともない属性が変化して いくこともある。 属性が変化しても同じモノであることを示 すためIdentityが必要。 データは大まかに2種類に分別できる。

    イミュータブルデータモデルの極意
  • SQLファイルから型安全なコードを生成するsqlc | フューチャー技術ブログ

    TIGの辻です。GoのORマッパー連載8日目です。記事では sqlc を紹介します。早速ですが、結論から行きましょう。 sqlc まとめ SQLファイルからデータベースにアクセスできる型安全なGoのコードを生成するライブラリ 構造体のモデルの手書き実装不要 複数テーブルをJOINしたときのマッパー実装不要 生成されるコードは不要なリフレクションなし SQLをがんがん書きたい、でも面倒なマッパー構造体は書きたくない、という開発者にとっては大きな味方になります。 sqlc の紹介 sqlc はSQLファイルからGoのアプリケーションコードを生成するライブラリです。2020/2に v1.0.0 をリリースし、着々とスターを伸ばしています。2021/08現在は v1.8.0 をリリースしています。資料で生成しているコードも v1.8.0 を用いています。 https://star-histor

    SQLファイルから型安全なコードを生成するsqlc | フューチャー技術ブログ
  • Go の sql.DB がコネクションプールを管理する仕組み

    Godatabase/sql パッケージ の DB 構造体 は、データベースへのコネクションプールを管理し、かつスレッドセーフ (goroutine セーフと言ったほうが良いのだろうか…?) にそれらの接続を使用できることを保証している。 ドキュメント にも次のように書かれている。 DB is a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines. こちらの基的な実装内容と、動作を制御するパラメータについて調べてみた。 基礎知識のおさらい database/sql パッケージはデータストアの実装によらない一般的な SQL のインタフェースを提供している。具体的なデータストアへの接

    Go の sql.DB がコネクションプールを管理する仕組み
  • 最強データベース(RDB)設計とは?アンチパターンの見極め方法も - FLEXY(フレキシー)

    ※2020年6月に公開された記事です。 日PostgreSQLユーザ会の理事を務める合同会社Have Fun Tech起業した曽根壮大(@soudai1025)と申します。元株式会社オミカレ副社長兼CTOです。直近では、『失敗から学ぶ RDBの正しい歩き方』を執筆しました。 今回はデータベースをテーマとして、魅力やMySQLとPostgreSQLの違い、アンチパターンの見極めなどの基礎知識に加え、勉強法などもご紹介します。 RDB関連の求人検索はこちら データベースを学ぶ魅力をエンジニア目線で考察 1.知識の費用対効果が高い エンジニアがデータベースを学ぶ利点という観点から言うと、データベースの特徴は寿命が長いことと私は考えています。 Webアプリケーションの界隈では1年単位でバージョンアップしたり流行っている言語が変わってしまうことがザラにありますが、データベースは10年、20年とい

    最強データベース(RDB)設計とは?アンチパターンの見極め方法も - FLEXY(フレキシー)
  • FiNC Developers Blog — t-wadaさんとのSQLアンチパターン勉強会

  • レシートで学ぶデータモデリング入門 | フューチャー技術ブログ

    春の入門祭りの第12弾です。 自己紹介こんにちは、TIGメディアユニットチームの川島です。 私は新卒でフューチャーに入社後、基幹系システム刷新PJのDBAからキャリアをスタートしました。その後、小売業の店舗システム刷新PJなど複数のPJで企画フェーズから導入フェーズまで幅広く経験し、現在は、人材サービス企業のクライアントの全社データ活用PJでコンサルティング業務を主として担当しています。 RDBMSについては論理から物理まで一通り経験していて、データに関わるところは強みがあると思っています。 記事の背景DB設計のデータモデリング入門として、コンビニのレシートを使ったDB設計をやっていきます。 DB設計はよく物理と論理の両面があると言われますが、今回は論理設計について扱います。 論理設計の基はモデリングの技法にあります。モデリングは、設計する人以外必要ないのでは? と思われがちですが、ソフ

    レシートで学ぶデータモデリング入門 | フューチャー技術ブログ
  • うさぎでもわかるデータベースの正規化・正規系判定(基本情報・応用情報)

    1.候補キー・主キー 正規化について書く前にまずは候補キーと主キーについての説明をしておきます。 候補キーは、データのレコード(タプル・データの集まり)を1つに特定できるようなデータ列のことを表します。候補キーは2つ以上ある可能性があります。 主キーは、上で説明した候補キーの中から最適な組み合わせを1つだけ選んだものです。多くの場合、学生番号、受験番号、IDなどのアルファベットや数字からなる簡潔なものになります。 主キーを満たす条件としては、 レコード(タプル)を1つに特定できること(重複NG) NULLにならないこと 候補キーの中から最も適した1通りの組み合わせである (主キーが2つ以上あることもあるので注意) この3つを両方満たして主キーと言うことができます。 では、実際にリレーション(データ表)を見ていきましょう。 リレーション1 とある駅の連動するゲームの情報を管理したリレーション

    うさぎでもわかるデータベースの正規化・正規系判定(基本情報・応用情報)
  • Amazon RDS for MySQL にインポートを行うとAccess deniedと怒られる - 雑記帳

    事象 Amazon RDS for MySQLに対して、MySQL WorkbenchでData Export行ったSQLファイルをData Importを行うと以下の様なエラーが返ってくる。 ERROR 1227 (42000) at line 17: Access denied; you need (at least one of) the SUPER privilege(s) for this operation 原因 1. インポートしたいダンプファイルのユーザーは`user1`@`localhost`となっていた。 しかし、RDSはリモートなので、インポート先は`user1`@`%`に紐づけられていた。 2. (書き込み対象のスキーマに対しては権限を付与していたが、) ビューやスキーマの情報を管理するスキーマに対して権限を与えていなかった。 3. インポートしたいダンプファイルが

    Amazon RDS for MySQL にインポートを行うとAccess deniedと怒られる - 雑記帳
  • テーブル設計の実務編

    業務系システムでのデータベース設計について この記事では業務系システムについて考えます。 業務系システムとは ・販売管理 ・発注管理 ・生産管理 ・給与システム ・勘定システム ・勘定系システム など、企業の主にお金や物の取引を記録するために使用するシステムです。 これらのシステムは互いに密接な関係を持ちます。 「販売管理システム」で受けた受注を「生産管理システム」に送って、製造計画を作ります。 「生産管理システム」が発注製品と数量を計算して「発注管理システム」に送り業者に発注するといった形です。 これらを一つにまとめたシステムがERP(基幹系情報システム)です。

    テーブル設計の実務編
  • 新入社員必読、データベースの基本を理解しよう

    スマホアプリ、Webアプリ、デスクトップアプリといったアプリケーションの種類を問わず、なにかしらの情報(データ)を蓄積して活用するアプリを作成するときに欠かせないのが、データベース管理システム(DataBase Management SystemDBMS)です。企業などの組織および個人にとって大切なデータ資産を確実に、かつ高速に管理して処理するためには、データ処理に特化した言語であるSQLをはじめとするデータベースに関する知識が必要になります。 記事では、これからリレーショナルデータベース管理システム(RDBMS)を扱おうと考えている入門者を対象に、データベースの「いろはのい」について、書籍『書き込み式SQLのドリル 改訂新版』から抜粋して掲載します。 記事をお読みいただき、さらに詳しくデータベースやSQLについて知りたい場合は、ITproのこのページや書籍『書き込み式SQLのドリル

    新入社員必読、データベースの基本を理解しよう
  • 決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ

    エンジニアの佐野です。今日はカンムの決済システムでユーザの残高管理をどうやっているかについて書きます。 カンムの製品であるバンドルカードはプリペイド方式のカードです。ユーザによる入金、店舗での利用、運営事由の操作などによりユーザの残高が増減します。このような残高の管理について単純に考えると user_id と balance と updated_at あたりをもったテーブルを用意して balance と updated_at を更新していく方法があるかもしれません。しかしながらカンムでは残高を管理するテーブルを持たず、これらイベントの履歴のみで残高を管理しています。以下、記事ではこれらユーザの残高が増減するイベントのことをトランザクションと呼びます。ここでは DB の Transaction Processing を意味しません。 記事のポイントは 残高を管理をするテーブルは作らず、ト

    決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ
  • カーディナリティの低いカラムに作成したインデックスの有効性について - Qiita

    CREATE INDEX idx_sex ON user (sex) USING BTREE; CREATE INDEX idx_pref ON user (prefecture_id) USING BTREE; DELIMITER // /******************************************************************************* * ランダムで性別を返す関数 * 割合は男性が98%、女性が2%という想定。 * ******************************************************************************/ SELECT 'create function v3_func_get_sex' as 'progress'// DROP FUNCTION IF EXIS

    カーディナリティの低いカラムに作成したインデックスの有効性について - Qiita
  • 開発者が知っておきたいSQLの実行モデル~アプリからデータベースへのアクセスを高速化するには?

    データベースのデータ・モデルは解決したい問題に合わせて使い分けることができ、昨今ではドキュメントやグラフなどのリレーショナル以外のモデルも注目されています。また、トランザクション系が生成した大量のデータをリアルタイムで分析するというような、性質の異なるワークロードを扱うことも求められています。これら性質の異なるデータ・モデルやワークロードを扱うにはどのような実装が必要でしょうか。この連載では、開発者の皆様がシステム・アーキテクチャやアプリケーション・コードをより洗練させるのに役立つデータベース・マネジメント・システム(DBMS)の基を振り返り、実装に合った技術の組み合わせを解説します。 第1回はデータベースにアクセスするAPIで最も広く使われているSQLという言語の実行モデルを再確認します。なぜこの言語がリレーショナル・モデルのみならず他のデータ・モデルに対しての操作にも使われるようにな

    開発者が知っておきたいSQLの実行モデル~アプリからデータベースへのアクセスを高速化するには?
  • 単一テーブル継承・クラステーブル継承・具象クラス継承について - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationWhat you can do with signing up

    単一テーブル継承・クラステーブル継承・具象クラス継承について - Qiita