タグ

dbに関するtyruのブックマーク (69)

  • 違いが分かるエンジニアのためのMySQL/InnoDB/ZFSチューニング!

    明けましておめでとうございます。今年もコンピューター道に邁進して参りますのでよろしくお願いします! さて、今年一発目のネタはMySQL利用時におけるZFSのチューニングについて取り上げようと思う。Solarisに搭載されている機能の中でも最も注目度の高いものの一つであるZFSであるが、MySQLのバックエンドとしてはあまり利用されていないように思う。(そもそもSolarisのユーザー数自体がそれほど多くないという話もあるが。)ZFSは優れたファイルシステムであり、ファイルシステム自体にスナップショット機能が搭載されていたり容量の限界に先が見えない(充分すぎるほど余裕がある)といった管理上のメリットがあり、DBAにとっては垂涎のファイルシステムであると言える。(Linuxで利用出来ないのが難点だが、ZFSを使うためにSolarisを使うのもアリだろう。) MySQL利用時におけるZFSのチュ

    違いが分かるエンジニアのためのMySQL/InnoDB/ZFSチューニング!
    tyru
    tyru 2021/03/26
  • 連番IDの運用とDBのスケール - Qiita

    はじめに Twitterで下記のようなツイートをしたのですが、それの解説をする必要があるのでは、と思ったのでします。 これ「シャーディングで連番id振りたいときに困るから自前で連番idを振る」っていうことをしてるblog記事なんだけど、シャーディングするとその連番id振る処理そのものがネックになってスケールしない」から設計ミスなんだけど、指摘するべきか悩むhttps://t.co/kNcNhiHEtF — ぽんこつ@骨システム (@ponkotuy) 2018年11月15日 DBは正直あんまちゃんと勉強してないのであれなんですが、運用で得た知見で話をします。なんか指摘あったら下さい。 RDBMSの特徴と問題点 MySQLとかPostgreSQLとかSQLServerなど、お仕事なんかで良く使うRDBMSなんですが、共通していくつかの特徴があります。特にここで重要なのは正しいデータのみを保

    連番IDの運用とDBのスケール - Qiita
    tyru
    tyru 2020/03/03
  • MySQLで論理削除とユニーク制限 - Qiita

    Railsでレコードの論理削除を行うにはparanoiaのGemを使うなどありますが、ユニーク制限のあるレコードでは論理削除したものと新しく作成したものがバッティングしてしまうため期待通りに動作しません。 ユニーク制限をアプリケーション側で行うのも手ですが、なんとかデータベースレベルで制限できないかということで、論理削除を考慮したユニーク制限を考えてみました。 まず前提知識として、ユニーク制限はNULLのカラムでは適用されません。 それをうまく利用します。 usersがUNIQUE KEYのnameと論理削除用のdeleted_atを持っているとして、 class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name t.datetime :deleted_at

    MySQLで論理削除とユニーク制限 - Qiita
    tyru
    tyru 2019/07/11
    論理削除ありのテーブルでユニーク制限する方法。なるほどなー
  • Dgraph - A high performance graph database written in pure Go

    Go Conference 2018 Spring

    Dgraph - A high performance graph database written in pure Go
    tyru
    tyru 2018/04/15
    Go 製のグラフ DB。Neo4j 等既存のグラフ DB との比較あり / Vim のプラグインマネージャー (Volt) 作ってるのでちょうど依存関係グラフを収集するのに何でやろうか考えてた所だった。
  • go-sqlrow

    この記事はGo2 Advent Calendar 2017 13日目の記事です。 昨日は@kami_zh さんの Goで標準出力をキャプチャするパッケージを書いた でした。 go-sqlrowGo言語で標準パッケージを使用してRDBMSからデータを取ってくるには、以下の様に書きます1。 type Person struct { ID string Name string } db, _ := sql.Open("dn", "dsn") row, _ := db.Query(`SELECT id, name FROM person where id='foo'`) var p Person row.Scan(&p.ID, &p.Name) SQL文を発行するまではいいのですが、最後の行、sql.Row#Scanがくせ者です。 上記の例のように、sql.row#Scanは可変長個のポインタを引

    go-sqlrow
  • Go の MySQL ドライバの効率の良い使い方 - methaneのブログ

    10/5 に ISUCON 3 の予選に Go 言語で参戦していました。 とりあえずレポートは会社のブログに書いたので、 Go 言語で go-sql-driver/mysql を使って MySQL を使う時に知っておくと良い点をまとめておきます。 ちなみに MySQL ドライバにはもうひとつ MyMySQL というものがあり、 まだ試していませんが、 MyMySQL の方が落とし穴が少なそうな気がします。 sql.Open() が返す DB オブジェクトはコネクションプールをしてくれる なので、自前で DB オブジェクトを使いまわしてコネクションプールを実装しても意味は無いです。 DB.SetMaxIdleConn() で、使い終わってもクローズしないコネクションの数を設定できます。 デフォルトだと使い終わったコネクションを閉じてしまうので、 DB オブジェクト自体をプールしても コネクシ

    Go の MySQL ドライバの効率の良い使い方 - methaneのブログ
    tyru
    tyru 2017/09/18
    コネクションプール
  • Hibernateはどのようにして私のキャリアを破滅寸前にしたか | To Be Decided

    このエントリでは、Grzegorz Gajosによる記事、How Hibernate Almost Ruined My Careerを紹介する。 (Grzegorzから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 想像してくれ。 君はJava開発者で、次のビッグプロジェクトを開始しようとしているところだ。 君は、そのプロジェクト全体に影響する根的な決断をする必要がある。 君の柔軟なデータモデルをオブジェクト指向で抽象化するベストな方法を選択したい。生のSQLを扱いたくはないからね。 どんな種類のデータもサポートしたいし、理想では全種のデータベースをサポートしたい。 すぐに思いつくのは、単にHibernateを使うという解だ。そうだろ? Javaディベロッパの90%は君に同意するだ

    Hibernateはどのようにして私のキャリアを破滅寸前にしたか | To Be Decided
    tyru
    tyru 2017/05/18
    永続コンテキストは人類には早すぎた
  • How to restrict data length in sqlite3

    tyru
    tyru 2017/03/16
    えっ… sqlite って varchar(16) みたいな文字列の桁数の制限無視するの…
  • 論理削除が奪うもの

    論理削除が奪うもの JPOUGのAdvent Calendar 12/10担当です。 12月 - 忘年会シーズンです。酒で記憶を失っている際に、怒ったとか、近くにいた人にカラんだとか、脱いだとか、毛を燃やしたとか、エレベーターホールにズボンが脱ぎ捨てられていたとか、会議室でが発見されたとか、そういう事件が多発する月ですね。皆様いかがお過ごしでしょうか。 微塵も記憶がない状態で、やらかした内容を色々な人から聞かされるにつけ、穴を掘って蓋してセメントで埋めてもらいたくなるのは常ですが、こういう時はどんな対処を取ればいいんでしょう。 得てしてロクでもない行動を取った時の翌日における参加者の記憶力の良さと来たらFlight Recorderも真っ青です。 なんとか失敗を無かったことにしたいと立ち回りたいですが、まあ無理です。各所にヒアリングを重ねれば重ねるほど確度と精度が高まります。エビデンスま

    論理削除が奪うもの
    tyru
    tyru 2017/03/15
    ブクマしてなかった
  • イミュータブルデータモデル(世代編)

    第1回 しょぼべん ( http://connpass.com/event/10849/ ) で話しした、イミュータブルデータモデル(世代編)です。Read less

    イミュータブルデータモデル(世代編)
    tyru
    tyru 2017/03/13
  • イミュータブルデータモデル(入門編)

    [B23] 事例で語る、社会インフラを支えるNonStop SQL ~見えないところで凄いんです~by Tetsuya ShinoharaInsight Technology, Inc.

    イミュータブルデータモデル(入門編)
    tyru
    tyru 2017/03/13
    すごく良い
  • RDBアンチパターン // Speaker Deck

    PHPカンファレンス2016の資料です http://phpcon.php.gr.jp/2016/

    RDBアンチパターン // Speaker Deck
    tyru
    tyru 2017/03/05
    いい加減買おうかな
  • 目指せ3つ星インデックス #yokohama_north

    MySQLのインデックスのお話

    目指せ3つ星インデックス #yokohama_north
    tyru
    tyru 2017/03/04
  • MySQLでGROUP BYを高速化したい

    tyru
    tyru 2017/02/07
    text 型は低速なので、text 型のカラムのハッシュ値を varchar 型のカラムとして追加。そしてインデックス貼って GROUP BY。なるほど
  • Nodeにおける初のオブジェクトデータベース: Realm Node.js

    Realmではこれまでモバイルデベロッパーにフォーカスして Realm Mobile DatabaseSwift、Objective-C、JavaXamarinReact Nativeに対して開発し、オープンソースとして提供してきました。日、完全に新しい挑戦としてRealm Node.jsをリリースします。Nodeにおける初の真のオブジェクトデータベースです。日から無料で完全にオープンソースとしてリポジトリが公開され、NPMを用いて npm install --save realm を実行するだけで利用できます。 これまで何年もの間、モバイルデベロッパーのみなさまから、サーバーサイドで動作するRealmが欲しいという当にたくさんのご要望をいただいていました。長い間タスクリストに残ったままで、優先度は高くありませんでした。しかし、その状況は Realm Mobile Platf

  • DBのCRUDでUとDは必要ないという話を聞きましたが具体的にどう実装するの?

    "CRUD is Dead"なんて言われてる方もいらっしゃるようでCRUDのUとDを禁止する流れが存在するようです。 以下のようなサイトでも言われているように、CRUDのUとDを利用せずデータをログのように扱う方法は関連するデータ(特に履歴)が失われないために好感が持てました。 http://tanakakoichi9230.hatenablog.com/entry/6715376804 http://qiita.com/Jxck_/items/156d0a231c6968f2a474 http://mike-neck.hatenadiary.com/entry/2015/03/24/231422 現在MySQLを利用してウェブサービスを作成しようと考えているのですが、実際にUとDを利用しないDB設計をするにはどうすれば良いのかというところでつまづいてしまいました。 自分で考えたものは5つ

    DBのCRUDでUとDは必要ないという話を聞きましたが具体的にどう実装するの?
    tyru
    tyru 2016/09/06
  • 『なぜUber EngineeringはPostgresからMySQLに切り替えたのか』について : RavenDB創始者の見地から | POSTD

    『なぜUber EngineeringはPostgresからMySQLに切り替えたのか』について : RavenDB創始者の見地から (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) Uber Engineering グループは、ブログでPostgresからMySQLに切り替えたことについて 非常に素晴らしい報告 (訳注:弊サイトでの和訳は こちら )をしました。ディスク上のフォーマットやパフォーマンスへの影響予測などの詳細まで踏み込んでおり、文字通り、読み応えがあります。 話のネタとしては、Uberからもう1つ素晴らしい記事が出ています。 MySQLからPostgresへの切り替え についてで、こちらも興味深い内容です。 ぜひ、両方読んでみてください。読み終えたら、意見交換しましょう。ブログ内での議論を私たちがこれまで取り組んできたことと比較したいと思

    『なぜUber EngineeringはPostgresからMySQLに切り替えたのか』について : RavenDB創始者の見地から | POSTD
  • 第7回 UberエンジニアがブログでPostgreSQLにダメ出し、PostgreSQLコミッター石井達夫氏に反論を聞く | gihyo.jp

    IT Cutting Edge ─世界を変えるテクノロジの最前線 第7回UberエンジニアがブログでPostgreSQLにダメ出し、PostgreSQLコミッター石井達夫氏に反論を聞く デジタルディスラプションを象徴する企業として、いまこの瞬間も破竹の勢いで成長を続け、交通サービスの世界を大胆に塗り替えているUber。未上場ながらすでに企業価値は6兆円を超えているとも言われており、世界最大のユニコーン企業として、その動向はつねに注目されつづけています。 クラウドやビッグデータ分析、オープンソースなど、最先端のITをフル活用し、ごく短期間で劇的にビジネスを拡大させたUberに対しては、やはり技術者からの強い関心があつまります。現在、1200名を超えると言われるUberのエンジニアたちは何をどんな環境で使い、どう動かしているのか ―Uberのエンジニアリングチームが公開している技術ブログ「Ub

    第7回 UberエンジニアがブログでPostgreSQLにダメ出し、PostgreSQLコミッター石井達夫氏に反論を聞く | gihyo.jp
    tyru
    tyru 2016/09/01
    煽り記事、全く関係ない所にいる分には論争になって勉強になるので便利
  • なぜUber EngineeringはPostgresからMySQLに切り替えたのか | POSTD

    はじめに Uberの初期のアーキテクチャは、Pythonで書かれたモノリシックなバックエンドアプリで構成されており、データの永続性のために Postgres を使っていました。当時から比べて今のUberのアーキテクチャはかなり変わっており、 マイクロサービス のモデルや新しいデータプラットフォームになりました。特に、以前Postgresを使っていたケースの多くで、今は Schemaless 、つまりMySQLの上で構築された新しいデータベースのシャーディングレイヤを使います。今回の投稿では、私たちが見つけたPostgresの欠点を探り、MySQLの上でSchemalessと他のバックエンドサービスを構築するに至った経緯について説明していきます。 Postgresのアーキテクチャ 私たちはPostgresで以下のような多くの制約に直面しました。 書き込みでの非能率的なアーキテクチャ 非能率的

    なぜUber EngineeringはPostgresからMySQLに切り替えたのか | POSTD
    tyru
    tyru 2016/09/01
  • UberのPostgresqlからNoSQL on MySQLへの移行を読んでざっくりまとめた

    Uber-migrated-pg-to-mysql.md Why Uber Engineering Switched from Postgres to MySQL - Uber Engineering Blog のまとめ Posgresqlだと pgは追記型なので少しの更新でも多くのdiskへのwriteがおきる カラムを一つ更新しただけで多くのindexの書き換えが起こる よって、replicationはWALを送るので更新が多いとWALが大量に送られる repcliationでは物理的なdiskの変更を送る DC間でレプリするときつい bugがあってreplica間でMVCCの不整合が起きる masterとreplica同じdisk上のデータ構成を共有するのでupgradeがつらい cache readはsyscallとosのpage cache経由なので重い 1コネクション1プロセス

    UberのPostgresqlからNoSQL on MySQLへの移行を読んでざっくりまとめた
    tyru
    tyru 2016/07/27
    PosgreSQL:追記型、1リクエスト1プロセス、… 等々で重い。MySQL:1リクエスト1スレッド、… 等々で軽い