タグ

dbに関するseiunskyのブックマーク (22)

  • 外部インターフェイスとしてのデータベースの拡張性と後方互換性

    これは SmartHR Advent Calendar 2023 シリーズ1の11日目の記事です。 はじめに この記事ではサービスが外にデータベースのテーブルを公開インターフェイスとして提供する場合について、一般的な REST の Web API と比較しながらどのようにインターフェイス自体と内部の実装との成長を実現するかをまとめています。 前提として一つのデータベースを複数のサービスから依存される状態は「共有データベース」と呼ばれてマイクロサービスの文脈で避けられています。サービス間の依存関係の増加、スキーマ変更の影響範囲も広く、サービスの自律性を失うことにつながることが避けられる理由として挙げられます。 しかし、データの統合において共有データベースを限定的に利用することは、メリットやリスクを慎重に評すればサービス間でデータの統合を行う有効なアプローチの一つになると考えます。 データベー

    外部インターフェイスとしてのデータベースの拡張性と後方互換性
    seiunsky
    seiunsky 2023/12/11
  • 我々(主語が大きい)は何故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`

  • Cloud Server Festa 2015 Spring 「サバフェス!」 (2015/03/05 10:00〜)

    お知らせ connpassではさらなる価値のあるデータを提供するため、イベントサーチAPIの提供方法の見直しを決定しました。2024年5月23日(木)より 「企業・法人」「コミュニティ及び個人」向けの2プランを提供開始いたします。ご利用にあたっては利用申請及び審査がございます。詳細はヘルプページをご確認ください。 3月 5 Cloud Server Festa 2015 Spring 「サバフェス!」 おれたちにできないインフラ構築を平然とやってのけるッ!そこにシビれる!あこがれるゥ!

    Cloud Server Festa 2015 Spring 「サバフェス!」 (2015/03/05 10:00〜)
  • DB 設計時のサイズ見積り[最新版] - Qiita

    こんにちは、すっかり秋ですね!@yone098 です。 みなさんDBの設計してますか? DB設計時のサイズ見積り 以前はてなダイアリーで書いた記事は5年前のものであり、リンクが切れているものがあるので最新版として MySQL, PostgreSQL, Oracle, SQLServer におけるDB設計時のサイズ見積りをまとめ直しました。 URL内のバージョン表記を変えると以前のバージョンの情報になります。 MySQLは、あまり情報に変化は無かったので Excel でマクロなどを作成して自社で自動算出出来るようにするのが良いと思います。 データタイプごとに必要な要求ストレージが決まっているのでレコードサイズが決まり、あとは要件次第で何レコードになるかを予測します。 データタイプごとに必要な記憶容量 テーブルの最大サイズ関連 http://dev.mysql.com/doc/refman/5

    DB 設計時のサイズ見積り[最新版] - Qiita
  • 誰も教えてくれなかったMySQLの障害解析方法 - Qiita

    それほどDBに詳しくないアプリエンジニアが何かトラブった時にすぐさま行動して問題把握できるようになる情報を列挙しておきます。 開発時、障害時の対処療法やちょっとした定期監視方法などを対象にしています。 抜的な対策などはインフラエンジニアさんにお任せしたほうがいいと思います。 DBはいろんな意味でこわいんでできれば触りたくないです>< 事前確認 MySQLサーバーのシステム設定値を確認しておく 以下のようにサーバーのシステム設定値を確認できます。 mysql> SHOW GLOBAL VARIABLES; # ワイルドカード(%)を用いた絞り込み mysql> SHOW GLOBAL VARIABLES LIKE 'performance_schema%'

    誰も教えてくれなかったMySQLの障害解析方法 - Qiita
  • 8月24日発売の『WEB+DB PRESS Vol.76』にGradleの記事書いた。 - さにあらず

    題名で全部言ってしまってる感はある。 とは言え宣伝しろと通達を受けているので、宣伝記事を書く事とす。 想定対象読者 SIerの中におかれましては、AntやらMavenやらXMLベースのツールを利用しているかと存じます。 意識が高まり過ぎて外に出ていってしまった何とかさんが書いた地獄の様なbuild.xmlを後からメンテする人間の気持ちなど考えようも無く。 そういう人達こそがGradleを使うべきであると僕は考えていますので、僕の記事ではGroovyの基礎的な文法を紹介する所から丁寧に書きました。 GradleはGroovyをふんだんに使っているので、並のJavaプログラマは大体面らうと思う、多分。 そもそもGroovyはスーパーテクノロジなのであるけどもマイナー感が否めない。 とは言え、僕の周りだと何かみんなGroovy使ってる感すらある、なごやこわい。 ページ数が全然足りなくて書きたい

    8月24日発売の『WEB+DB PRESS Vol.76』にGradleの記事書いた。 - さにあらず
    seiunsky
    seiunsky 2013/08/06
    @inao わっふるわっふる
  • RODBC - RjpWiki

    RjpWiki はオープンソースの統計解析システム R に関する情報交換を目的とした Wiki ですRとインターフェースのあるアプリ RODBC † いろいろな種類のデータベースに対して、アプリケーションからは共通したプロトコルでアクセスできるようにするための規格としてODBCがあります。RODBCではRからODBCを使うことで、各種のデータベース上に格納されたテーブルをデータフレームに読み込む、データフレームをデータベースに格納するなどのことができます。 ↑ Windows以外の環境でのメモ † ODBCというとWindowsだけのもののように思えますが、データベースを抽象化して交換が可能にすること自体はどのOSでも有用なアプローチなので、LinuxMacOS Xなどのunix系OSでも利用されることがあります。MacOS X では標準でiODBCというODBCドライバマネージャがイン

    seiunsky
    seiunsky 2012/03/11
  • 〜うまく動かすMongoDB〜仕組みや挙動を理解する - doryokujin's blog

    @doryokujinです。この業界で非常に強い影響力を持つ@kuwa_tw氏が某勉強会でMongoDBについてdisられており、このままではMongoDB自身の存続が危ういと思い、急遽ブログ書きました。(冗談ですよ) ザ・ドキュメント〜うまくいかないNoSQL〜 View more presentations from Akihiro Kuwano MongoDBを使っているときに出会うトラブルをうまくまとめてくださった「MongoDBあるある」的な良い資料だと思います。今日はここで書かれているトラブルの解決方法を提示したいと思います。恐らく@kuwa_tw氏は全ての解決方法を知っていながら、同じトラブルへ悩む人のためにあえてdisったのだと思います。 MongoDB はデータベースもコレクションも存在しなければ自動作成してくれる mongoシェルを起動する場合、たいていは $ mong

    〜うまく動かすMongoDB〜仕組みや挙動を理解する - doryokujin's blog
  • ActiveRecordのコネクションプーリングをやめてみる - kaeruspoon

    おおいしつかさ 旅行とバイクとドライブと料理と宇宙が好き。 Ubie Discoveryのプログラマ。 関連 : RailsMysqlスレーブ群をロードバランサ経由で使用できる、FreshConnectionを作り始めました RailsのActiveRecordは、DBとのコネクションがプールされます。 アクセスごとにコネクションをはりなおすよりは、オーバーヘッドがない分、理にかなっているようにも思えます。 ただ、比較的大きめなサイトになってくると、はりっぱなしのコネクションが多くなりすぎちゃって大変なことになってきます(1サーバ1万コネクションとかなりかねない)。リソースはうし、たくさんのスレーブを抱えているときにActsAsReadonlyableなどでちまちまやっていたらとても運用できません。スレーブなんてLVS+keepalivedでバランシングしちゃいたいところ。でもコネクシ

  • アプリ開発者よりのDB勉強会をやりたい、というかやる - 分け入ってもコード

    結論 SQLがどーのデータの持ち方がこーのというアプリ開発側の話題がメインのDB勉強会をやりたいからやるよという話 以下補足 コンテンツ アプリ開発者がDBを握らなければならない時代 DBを握るということ 勉強会について アプリ開発者がDBを握らなければならない時代 データ爆発の時代 データ爆発の時代がくると言われて久しいです。扱うデータの量が増えてきているだけでなく、データの構造も多種多様になってきていると感じています。これまではOne Size Fits AllでRDBが対応してきたのが、増加し複雑化していくデータにRDBのみでは対応しきれなくなってきている為にNoSQLのようなプロダクトが盛んに開発され利用されています。 アプリ開発者としてやるべきこと そういった時代を迎えるにあたって、アプリ開発者は何も備えなくていいんでしょうか?DBはインフラ/サーバーエンジニアのもの? 僕は「D

    アプリ開発者よりのDB勉強会をやりたい、というかやる - 分け入ってもコード
    seiunsky
    seiunsky 2011/06/27
    面白そう!
  • AIR基礎講座(第8章 SQLiteでDB操作)

    SQLEvent SQLConnectionやSQLStatementの実行が成功した場合に発行されます SQLErrorEvent SQLConnectionやSQLStatementの実行が失敗した場合に発行されます SQLUpdateEvent INSERT、UPDATE、DELETEのSQLステートメントの実行結果により接続しているDBテーブルデータが変更された場合に発行されます DBの作成と接続は以下の様に行います。 このサンプルではDBファイルをデスクトップへ作成していますが、通常はアプリケーションのインストールディレクトリなどに作成する方がよいでしょう。 DBの作成はSQLConnectionクラスのopen()メソッドで行います。open()メソッドの第二引数をfalseに指定すると、DBが存在しない場合、エラーとなります。DBの作成、オープンが成功したら

    seiunsky
    seiunsky 2010/02/11
    これは良いまとめ
  • MyISAMとInnoDBのどちらを使うべきか

    Twitterで話題になってたので簡単にまとめました。 ●MyISAMにしか無い機能を使いたい場合はMyISAMを使うしかない ・全文検索 (TritonnやSphinx) ・GIS ●InnoDBの利点(MyISAMの欠点) ▲障害対応系 ・クラッシュしても再起動するだけでリカバリができる ・クラッシュリカバリにかかる時間はテーブルサイズに比例するようなことはなく、コミット済みのデータは修復できる (巨大なMyISAMテーブルのREPAIRには数日単位で時間がかかることがある) ・オンラインバックアップができる ・INSERTやLOAD DATAなどを実行している途中でCtrl+Cでその更新系SQL文を止めても、テーブルは壊れないし、中途半端な状態で更新されることも無いし、スレーブが止まることも無い ▲性能系 ・行レベルロックなので並列性が高い(MyISAMはテーブルロック)。またSEL

  • 正しいベンチマークをするための10のポイント

    世の中ではたくさんの人が独自にベンチマークを行ない、独自に情報発信がされています。そのベンチマークの中には、非常に参考になるものもあれば、現実性に大きく欠けるものもあります。競合他社が、ライバル社の製品にとって不利な条件でベンチマークを行い、それを発信することも日常的に行われています。ベンチマークの結果を鵜呑みにすることは危険で、結果の意味を判断するスキルを持つことが重要です。これはプロジェクトにおいて負荷テストを行う場合にも重要です。負荷テストの条件設定が正しいかどうかを判断できるようになるためです。 ここでは、私がDBサーバのベンチマーク/負荷テストを行ったり結果を読んだりする上で、心がけているポイントを10個ほど紹介したいと思います。 ■ハードウェアに関する4つのポイント 1. ハードウェアのスペックと設定を注視する ハードウェア構成によってベンチマーク結果は劇的に変わるので、言わず

  • ウノウラボ Unoh Labs: RDBで階層構造を扱うには?

    yukiです。ダイエットを始めて3kg減ったと思ったら、風邪を引いて見事に1kg増量。 運動しないと駄目ですね。あと残り20kg、道のりは遠いです。 さて今回は、「RDBで階層構造を扱うには?」です。 あるサイトを構築中に階層構造をもったカテゴリ構造にすることになり、どのようにDBで扱うか悩みました。 DBMySQLを採用していたので、この時点でぱっと頭に浮かんだ選択肢は以下のようなものでした。 XML-DBを利用する 親カテゴリレコードのプライマリIDを子カテゴリレコードに持たせる 親を含めた『絶対パス』を名称として扱い、取り出した後にパース ファイルシステムに同様のディレクトリ構造を作り、毎回パースする (1)のXMLDBはオープンソースのeXistやXindice、Yggdrasillなど様々な選択肢がありましたが、カテゴリのみの利用な割にメンテナンスコストが高すぎるので見送りま

    seiunsky
    seiunsky 2009/06/25
    階層構造のアルゴリズム
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • MySQL Connector/Jにおける大量INSERTのチューニング - SH2の日記

    ピンポイントチューニング講座です。まずは結果から。 このグラフは、以下のテーブルに50,000レコードINSERTしたときの処理時間を示したものです。性能に70倍以上もの差が出ているのはなぜか、見ていきたいと思います。 CREATE TABLE `loadtest` ( `id` int(11) NOT NULL, `data` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 方法1 ベースライン conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS); pstmt = conn.prepareStatement("insert into loadtest (id, data) values (?

    MySQL Connector/Jにおける大量INSERTのチューニング - SH2の日記
  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

    いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
  • URLを扱うテーブルを作るときにどうすべきか - 金利0無利息キャッシング – キャッシングできます - subtech

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    URLを扱うテーブルを作るときにどうすべきか - 金利0無利息キャッシング – キャッシングできます - subtech
    seiunsky
    seiunsky 2009/03/11
    「InnoDBのインデックスの長さ制限が767bytesなので」へぇー
  • MOONGIFT: >> RailsにおけるMySQLのボトルネックを分析する「Palmist」:オープンソースを毎日紹介

    Railsは度々遅いということが話題に上がる。Ruby自体の性能もあるだろうが、データベースを富豪的に使っているのにも原因がある。便利であるためについついデータベースを多用していたり、データの取り出しを複雑(都度集計など)にしていないだろうか。 メイン画面 個人的な経験から言えばボトルネックになりがちなのはレンダリングとデータベースだ。このデータベースの問題点を洗い出すのに便利なのが、またしてもRailsアプリケーションだ。 今回紹介するフリーウェアはPalmist、RailsMySQL実行履歴を見るソフトウェアだ。ソースはGithubで公開されているがライセンスは明記されていなかったので注意していただきたい。 Palmistは他のRailsアプリケーションのログファイルを読み取って、それを解析して表示してくれる。コントローラ、アクション、DBへのCRUDごとにリストアップしてくれる。実

    MOONGIFT: >> RailsにおけるMySQLのボトルネックを分析する「Palmist」:オープンソースを毎日紹介
  • Kazuho@Cybozu Labs: Q4M - MySQL 上で動作するメッセージキュー

    « ウェブアプリケーションにおけるHDDの正しい使い方 | メイン | Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) » 2008年01月15日 Q4M - MySQL 上で動作するメッセージキュー 数年来ずっと「RDBMSに統合されたメッセージキューがほしい」と言ってきたわけですが、昨年末にストレージエンジンをプラグインとして開発できる MySQL 5.1 が RC になっていることに気づき、自分で作ってみました。 Q4M (Queue for MySQL) は MySQL 5.1 のプラガブル・ストレージ・エンジンとして動作するメッセージキューであり、堅牢・高速・柔軟であるよう設計されています。昨年12月遅くに開発が開始され、まだ非常に原始的ですが、かなり高速に動作します。 q4m.31tools.com 自分の英語を日語訳するというのも変なものですが

    seiunsky
    seiunsky 2008/12/06
    メッセージキュー