タグ

DBに関するfakestar0826のブックマーク (17)

  • MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと

    — そーだい@初代ALF (@soudai1025) 2015, 8月 24 とブーメラン投げて見事に刺さってるので今から記事書く。 両サイドにはかなり厳しい話もするが俺の音を聴いておけ(関白宣言) まぁ歴史の長いRDBなのでお互いの比較記事は沢山ある。 なのでマルチスレッド(MySQL)とマルチプロセス(PostgreSQL)だとかVACUUMだって話はしない。 むしろ実際に使ってみた際の違いをにフォーカスする。 1. SQLの違い 基的にMySQLでやっていたことはPostgreSQL出来る。 しかし関数の挙動の違いは幾つかある。 例えば時間から曜日に該当する数字に変換した場合に MySQL → date_format(time,"%w") 0から始まり、日曜日に該当する PostgreSQL → to_char(time,'D') 1から始まり、日曜日に該当する など挙動に互換性

    MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと
  • node.jsのいろいろなモジュール33 – squelでSQLを組み立てる | DevelopersIO

    はじめに nodeでRDBへアクセスする方法 nodeといえば、mongoDBやredis等のKVSといっしょに使用するケースが多いですが、RDBMSとやり取りすることも多々あります。 その際、nodeから、各種RDBMSへアクセスする方法はいくつかあります。 こういったORMモジュールを使ったり、以前も紹介したDB用モジュールを使ったりします。 ORMで簡単DBアクセスでもいいのですが、手軽に使うにはやはりSQLを書いて実行するのが楽ではないでしょうか。 今回は、RDBMSSQLを使ってアクセスする際、簡単にSQLを組み立てるモジュールを紹介します。 squelとは 今回紹介するsquelモジュールは、SQL文字列を生成するための「SQLビルダ」です。 node/ブラウザどちらでも動作し、標準のSQL文字列を生成するためのヘルパ関数を提供してくれます。 SQLビルダなので特定のDBに依

    node.jsのいろいろなモジュール33 – squelでSQLを組み立てる | DevelopersIO
  • MySQLのコマンドたち - すぎゃーんメモ

    http://mysql-casual.org/2011/11/mysql-casual-advent-calendar-2011.html の6日目の記事として書かせていただきます、sugyanです。 勢いで参加表明してしまい、今日慌てて久しぶりにMySQLを触りました。 MySQLでFizzBuzz ストアドプロシージャって使ったこと無かったので初めて触ってみました。 DROP PROCEDURE IF EXISTS FizzBuzz; delimiter // CREATE PROCEDURE FizzBuzz(n INT) BEGIN DECLARE i INT DEFAULT 1; WHILE i <= n DO SELECT CASE WHEN i % 3 = 0 AND i % 5 = 0 THEN 'FizzBuzz' WHEN i % 5 = 0 THEN 'Buzz'

    MySQLのコマンドたち - すぎゃーんメモ
  • MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...

    しわっす!DBA 兼オペレーションエンジニア兼タスクマネージャやってる riywo です。何のネタを書こうかなぁと考えたのですが、正直ネタを仕込む時間もなかったので僕がいつもやってることをさらっと紹介するということで勘弁して下さい>< MySQL がおかしい! 03:14 hidek: なんかエラー出まくってるんだけど! 03:14 zigorou: MySQL と通信してるとこっぽい 03:15 riywo: 見ます こんなやりとりは皆さん日常茶飯事ですよね?ね?ね?こんな時に、DB に責任を持つものとして真っ先に対応するのが僕らの仕事です。でも、じゃあ具体的にこのあと何をしましょう?既にサービスはエラーだらけで一刻を争う状態です。 (対応開始) まずはエラーメッセージ 今回の様な場合はアプリのエラーログにどばっと MySQL に関するエラーが出ているでしょう。まずはそれを見ることが始ま

    MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...
  • 複合主キーを避けるべき理由 - 虎塚

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

    複合主キーを避けるべき理由 - 虎塚
  • ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門 広く浅くを担当してます、ota です。 技術ブログ第一回から早速流用スライドで申し訳ありませんが、社内勉強会資料として作成した「MySQL INDEX + EXPLAIN入門」です。 当社でもソーシャルゲームの開発を行っていますが、このような大量のデータを使用する・クエリの速度が求められる場合にインデックスは大変重要です。 インデックスの有効な利用にはDB設計者だけではなくプログラマにもある程度の知識が最低限必要となりますが、インデックスについての初心者向け資料があまりないようです。 このスライドではプログラマに知っておいて欲しい以下の基的な点をまとめました。 INDEXを使用する時に気をつけること WHERE句 !=、<>はインデックスが使用できない WHERE句の全てのANDにかかっていないイン

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • [ThinkIT] 第3回:MemoryとArchive (1/3)

    今回は、「Memory」と「Archive」の2つのストレージエンジンを取り上げます。Memoryエンジンは比較的古いMySQLのバージョンから提供されており、以前はHeapと呼ばれていたストレージエンジンです。もう一方のArchiveエンジンは、MySQL 4.1から提供されている比較的新しいエンジンです。 それでは、それぞれの特長やテーブルファイルの構成について解説します。 Memoryエンジンは、その名前の通りテーブルデータすべてをメモリ上にのみ格納します。これは、変更結果をディスク上に書き出さないことを意味します。変更データもメモリ上に存在しているため、アプリケーションからの問い合わせは、このメモリ上のデータに対して処理を行なって結果を返します。 ただし、MySQLサーバが終了するとテーブルデータが消滅してしまいますので、当然変更結果も消滅します。ここでいうMySQLサーバの終了と

  • [ThinkIT] 第1回:MySQLストレージエンジンの概要 (1/3)

    連載で取り上げるMySQLは、非常に人気の高いオープンソースのRDBMSです。このMySQLの大きな特長は、ストレージエンジンを選択できるところにあります。そこで連載では、MySQLのストレージエンジンに焦点をあて、様々なストレージエンジンの特長や構造を解説していきます。最後まで、お付き合いください。 MySQLの概要についてはご存知の方も多いと思いますが、復習の意味も込めて簡単に紹介します。 MySQLは、MySQL社を中心として開発が進められているRDBMSで、オープンソースの標準的なプラットフォームを意味する「LAMP」という言葉(Linux/Apache/MySQLPHP)に採用されるほど有名なオープンソースです。ライセンスとしては、GPLと商用ライセンスのデュアルライセンス形態で提供されています。バージョン5.0よりストアードプロシージャやトリガなどをサポートし、他のRDB

  • MySQLでインデックスを使って高速化するならCovering Indexが使えそう - (゚∀゚)o彡 sasata299's blog

    2009年10月28日09:33 MySQL MySQLでインデックスを使って高速化するならCovering Indexが使えそう Linux-DB システム構築/運用入門 (DB Magazine SELECTION) 著者:松信 嘉範 販売元:翔泳社 発売日:2009-09-17 おすすめ度: クチコミを見る 最近、このを読んでいます。非常に面白いし、参考になります〜。中でもインデックスについての記事が特に興味深かったので簡単にまとめてみます。 前提 ・インデックスは検索性能には効果があるが、更新性能は落ちてしまう ・MyISAM と InnoDB ではインデックスの構造が違う ・インデックスは B+Tree インデックスと呼ばれ、ルート、ブランチ、リーフの階層構造になっている ・インデックスはソートされた状態で作成されている まずは MyISAM と InnoDB でのインデックス

  • [ThinkIT] 第2回:MyISAMとInnoDB (1/3)

    今回は、MySQLのストレージエンジンの中でも特に有名な「MyISAM」と「InnoDB」の2つを取り上げます。MyISAMはMySQLのデフォルトストレージエンジンで、ストレージエンジンを指定せずにテーブルを作成するとMyISAMが選択されます。もう一方のInnoDBエンジンは、MySQLに豊富なトランザクション機能を提供するストレージエンジンとして有名です。 まずはそれぞれのテーブルファイルの構造について解説し、最後にInnoDBのトランザクションについて解説します。 各ストレージエンジンのファイル構造を説明する前に、前知識としてMySQLのディレクトリ構造について説明します。 MySQLのデータベースディレクトリには、バイナリログと呼ぶデータベースの更新情報を格納するファイルと、2つのサブディレクトリが存在します(図1)。 「mysql」ディレクトリには権限テーブルと呼ばれるMySQ

  • ソーシャルゲームのためのデータベース設計

    ・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、�流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて

    ソーシャルゲームのためのデータベース設計
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    fakestar0826
    fakestar0826 2011/01/07
    JOIN句を図で表現。分り易い。
  • 第5回 位置情報を保存しよう(前編):位置情報サービスのはじめ方|gihyo.jp … 技術評論社

    今回から2回に分けて、位置情報をDatastoreに格納する方法をいくつか紹介します[1]⁠。 数値型で保存する 緯度経度の情報をデータベースへ格納するときに、もっとも簡単な方法が数値型として保存する方法です。緯度経度がとりうる値の範囲は、以下の通りですので、システムに必要な小数点以下の数字を考慮して型を決めましょう。 はてなフォトライフでは、写真に緯度経度のメタ情報を設定することができますが、高精度な緯度経度情報は必要ないので、型を以下のように指定しています。 latitude decimal(7,4) longitude decimal(7,4) decimal(7,4)という指定は、10進数で7桁のデータで、小数点以下は4桁まで格納するというものです。 あるオブジェクトの緯度経度を保存し、表示するだけならこれだけで十分ですが、位置情報を中心に扱うサービスになると、格納したデータを緯度

    第5回 位置情報を保存しよう(前編):位置情報サービスのはじめ方|gihyo.jp … 技術評論社
  • 【レポート】PHPデベロッパがおかしがちな10のMySQL間違い | エンタープライズ | マイコミジャーナル

    SitePoint: New Articles, Fresh Thinking for Web Developers and Designers PHPを使ってWebサイトやWebアプリケーションを構築する場合はデータベースも併用することが多い。そしてその場合に採用されることが多いデータベースのひとつにMySQLがある。PHPはすぐに利用できるようになるプログラミング言語といわれているが、MySQLSQLはそうではない。堅牢で信頼できるデータベースを設計し、それを扱うSQLクエリを作成するにはそれなりの学習時間と経験が必要だ。 こうした話題がSitePointにおいてTop 10 MySQL Mistakes Made By PHP Developersとして掲載されている。PHPデベロッパが犯しがちな10のMySQLミステイクという内容になっている。どういった間違いをしてしまうか簡単に

  • MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記

    MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。日はそれを無停止、オンラインのままでできないかという話題です。 基的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

    MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記
  • MySQL や PostgreSQL でトリガーベースの実体化ビューを後から追加する方法 (もしくは無停止での CREATE INDEX) - kazuhoのメモ置き場

    読み込み>書き込みなデータベースだと、実体化ビュー (materialized view) を使って読み込み速度を上げるってのは有効な手法 ちなみに MySQL や PostgreSQL だと実体化ビューはトリガーを使って書く *1 では、トリガーベースの実体化ビューを後から追加した場合に、どうやって既存データを新しいビューに反映させるのか。 UPDATE トリガを、ビューの側に対応するデータがない場合は INSERT トリガと同様の動作をするように実装すればいい (典型的には REPLACE INTO 文を使う)。ビューの初期データ充填は UPDATE src_table SET id=id; MySQL だと CREATE INDEX CONCURRENTLY がないから副インデックス作成はスレーブでやったりする*2けど、上の UPDATE を LIMIT つきで回すことで、ビューをイ

    MySQL や PostgreSQL でトリガーベースの実体化ビューを後から追加する方法 (もしくは無停止での CREATE INDEX) - kazuhoのメモ置き場
  • MySQL管理者最速マスター

    巷ではプログラミング言語の最速マスターが流行ってるので、MySQLも参戦。ただし管理者向け。 まずはダウンロードとインストールダウンロードサイト http://dev.mysql.com/downloads/ バイナリにはインストールパッケージ(Windows=MSI、Mac=DMG、Linux=RPMとか)とアーカイブ(*NIX=tar.gz/Windows=zip)があるけど、初心者は黙ってパッケージをチョイス。インストールはウィザードに従うだけ。英語だけどそこはガマン! パッケージリポジトリがあるOSを使ってるなら、リポジトリからインストールするのもありだ。例えば、 shell> sudo yum install mysqlとか shell$gt; sudo apt-get install mysqlとか。これは楽チンだけどMySQLのバージョンがちょっと古くなるので注意。 もちろん

    MySQL管理者最速マスター
  • 1