タグ

dbに関するsyou6162のブックマーク (33)

  • ER図 の自動作成を CI に組み込んだ話 - RareJob Tech Blog

    塚田です。新人の頃からドキュメントの管理が大の苦手です。 ドキュメントの更新は滞り陳腐化してしまい、必要な時に見直すと使い物にならなかったりします。誰もが経験あるのではないでしょうか。 少しでもその呪縛から解放されるのであれば全力を注ぎたくなる性分なので、 ER図 を自動作成してくれる SchemaSpy を社内で使っている GitLab CI に組み込みました。 今回は SchemaSpy の紹介と、CI に組み込んだ話をしたいと思います。 SchemaSpy とは DBに接続してテーブル構成などをスキャンして、html としてアウトプットしてくれる機能を持っています。 MySQL や PostgreSQL などをサポートしています。 http://schemaspy.org/ CI への組み込み 弊社のCIのパイプラインでは、GitLab に push すると、自動でテストなどが動くよ

    ER図 の自動作成を CI に組み込んだ話 - RareJob Tech Blog
  • What Is the Role of Machine Learning in Databases? - RISE Lab

    syou6162
    syou6162 2019/01/12
    DBにおける実行計画の推定に機械学習を使う話。
  • SQLアンチパターンを読みました

    by @dekokun on 2013/02/26 8:15 Tagged as: SQL, 書籍. デプサミ2013で和田さんのSQLアンチパターンの講演を聞けなかった腹いせにSQLアンチパターンを購入して読んでおりましたが読み終わりましたので投稿。 だいたいの内容 世のシステムのかなりの割合で使用されているとおもわれるRDBMSを使用したシステムを作る際に開発者(DBAなど含む)が陥りがちなアンチパターンがまとまっているです。 「インデックスショットガン(無闇やたらとインデックスを貼りまくる)」などの「そりゃ当然やっちゃいけないよね」と誰しもが納得するものから、「IDリクワイアド(すべてのテーブルにID列をつける)」など、一部の人には「あれ、それって何がダメなんだっけー」というもの、「リーダブルパスワード(パスワードの値を読める状態でDBに保存)」などの、いわゆる「DB設計についての

    SQLアンチパターンを読みました
    syou6162
    syou6162 2017/04/13
    でこでこ
  • 稼働中のサービスのテーブル構造変更とデータ移行 - stefafafan の fa は3つです

    同僚のこういう記事を読み、そういえば自分もWeb系の企業に入ってから初めてデータ移行の流れとかを知ったなーとなったのと、せっかく技術ブログあるのにあまり書いてないのは勿体無いなーという気持ちからこの記事書いてみます。 www.yasuhisay.info 技術系の記事はもっと気楽に書いていきたいマン。 何がしたいのか 流れ どういうことか ほか 何がしたいのか 何らかの理由でデータベースの構造を変えたいとなった際、いきなりガバッと変えたいのもやまやまですが、動き続けているWebサービスだとそれはちょっとできないですよね。いきなり画面がみれなくなった!いきなりログインできなくなった!とかなると大変です。また、いじっている間に何かしらのミスでデータが飛んじゃって前の状態に戻せなくなるとか。Webサービスは出してから後々のリリースで修正を入れることは確かにできますがそれがデータベース層での変更で

    稼働中のサービスのテーブル構造変更とデータ移行 - stefafafan の fa は3つです
    syou6162
    syou6162 2017/03/17
  • PostgreSQL用SQLファイアーウォール「sql_firewall」リリース

    先日、sql_firewallというPostgreSQLの拡張モジュール(EXTENSION)をリリースしました。 https://news.ycombinator.com/item?id=10109566 https://github.com/uptimejp/sql_firewall このモジュールは、PostgreSQL上で実行可能なSQLを制限することで、SQLインジェクションを防ぐことを目的としたものです。 今回はこの sql_firewall について、その仕組みと使い方を簡単にご紹介します。 ■sql_fiewallの仕組み sql_firewallには、以下の3つの動作モードがあります。 学習モード(learning) 警告モード(permissive) 防御モード(enforcing) 学習モードではPostgreSQL上で実行可能なSQL文を学習させることができます。

    PostgreSQL用SQLファイアーウォール「sql_firewall」リリース
  • mysqlをdisる会 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに やあ (´・ω・`) ようこそ、バーボンハウスへ。 このmysqlはサービスだから、まずsystemctl start mysqld して落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って、この記事をかいたんだ じゃあ、注文を聞こうか。 というわけでmysqlをdisります。disるだけな

    mysqlをdisる会 - Qiita
  • MySQLでトランザクションの4つの分離レベルを試す - FAT47の底辺インフラ議事録

    トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス

    MySQLでトランザクションの4つの分離レベルを試す - FAT47の底辺インフラ議事録
  • データベースリファクタリングに挑戦してみた。(トリガーを使わないで列名を変更する) · DQNEO日記

    下記で紹介しているのはあくまで一例です。(特に、SELECT * に関しては賛否両論あると思います。) 他にもっとよいやり方があったら教えてください! トリガーを使わない列名変更の流れ 例として、「user.meiというカラムをuser.firstnameというカラムに変更する」ケースをとりあげます。 アプリ側での事前改修 新しいDB列の追加(移行期間の始まり) アプリ側での切り替え 古いDB列の削除(移行期間の終わり) アプリ側での後片づけ アプリ側での事前改修 事前にアプリを改修して、新旧両方対応の仕組みをいれておきましょう。 このフェーズの目標は、DB列が追加されたときにアプリが自動で追従できるようになることです。 SELECT * FROM を使う アプリケーション内のSQLで、SELECT a,b,c FROM という風に列名をハードコーディングしていると、カラム名変更したいとき

    syou6162
    syou6162 2017/02/22
  • MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;

    最近MySQLの勉強をしていました。実践ハイパフォーマンスMySQLを読むべきという話を聞いていたのですが、かなり網羅的に書かれていて、今の知識ではどれが重要なのかわからない状態でした。そこで色々調べてみて、参考になる記事をいくつか見つけたので、少しまとめてみようと思います。 今回まとめた記事を読んで、大体以下のことが理解できました。 インデックスの使われ方とその構造(MyISAMとInnoDB) EXPLAINの詳しい使い方、見方 InnoDBの特性 ALTER TABLEの特性 レプリ遅延 まず最初に Webエンジニアのための データベース技術[実践]入門 (Software Design plus)posted with amazlet at 12.06.02松信 嘉範 技術評論社 売り上げランキング: 9767 Amazon.co.jp で詳細を見る 松信さんの書いた「Webエンジ

    MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;
  • Berkeley DBのインストール - bnote

    Berkeley DB-4.3.27をインストールします。Subversion1.2.3の要求にあった4.3.27を インストールします。 http://www.sleepycat.com/からdb-4.3.27.tar.gzを任意のディレクトリ ここでは、/usr/local/srcにダウンロードします。 次に、ダウンロードしたファイルを展開しコンパイル、インストールします。 #wget http://downloads.sleepycat.com/db-4.3.27.tar.gz #tar zxvf db-4.3.27.tar.gz #cd db-4.3.27 #cd build_unix/ # ../dist/configure #make #make install 共有ライブラリのパスを追加しキャッシュへ反映する。 # cd /etc/ # echo /usr/local/Ber

    syou6162
    syou6162 2010/06/14
  • 第1回 RDBMSとNoSQLデータベース | gihyo.jp

    はじめに NoSQL(Not Only SQL)という言葉が注目を集めています。これは「RDBMSが得意なことはRDBMSで、不得意なところにはRDBMSにこだわらず、用途に合ったデータストアを使いましょう』という考え方です。最近では、いわゆるNoSQLデータベース (⁠key-valueストアや各種データベース⁠)⁠ が次々と登場してきています。 そこで今回から数回に渡り、それぞれのNoSQLデータベースの特徴や具体的な使い方について紹介していきます。 RDBMSの強みとは そもそも、MySQLやPostgreSQLなどのRDBMSの弱みを補うため、様々なNoSQLデータベースが登場してきたわけですが、RDBMSにはたくさんの強みがあることも忘れてはいけません。 RDBMSの強み データの一貫性 (⁠トランザクション) 更新時のコストが少ない(JOINが前提でテーブルが正規化されている)

    第1回 RDBMSとNoSQLデータベース | gihyo.jp
  • SQLiteでvacuum - Junk Blog

    ここのMTではSQLiteを使っている。SQLiteDBの再構成(vacuum)をする事で不要な領域を開放できる。やる事は以下のとおり。sqlite3 データベースファイル名 sqlite> vacuum sqlite> .quit念のため、行う前にbackupをしておく。ちなみに2.5MB-> 2.2MBと1割削減できました。

  • sqldf - Project Hosting on Google Code

    Code Archive Skip to content Google About Google Privacy Terms

    syou6162
    syou6162 2009/11/20
  • DBIx::Class::SchemaとDBIx::Class::Schema::Loader - iDeaList::Writing

    DBIx::Class::SchemaとDBIx::Class::Schema::Loader両方を試してみた。 DBIx::Classは、SQL文を書かずにresultset()を使ってゴニョゴニョできるのがすばらしい!! 今回登場するファイルの場所はこんな感じ。 /root | |---Schema.pm # DBIx::Class::Schema |---SchemaLoader.pm # DBIx::Class::Schema::Loader | |---Schema/ | |---Member.pm # DBIx::Class::Schemaのload_classes(); | |---test_SchemaMember.pl #実行してみるファイル *db file = /path/to/hoge.db (DBI:SQLite) テーブル作成用 members.sql DROP

    DBIx::Class::SchemaとDBIx::Class::Schema::Loader - iDeaList::Writing
  • DBMによるテーブルデータベース - mixi engineer blog

    正月早々インフルエンザにかかって寝込んだmikioです。電車に乗る時や繁華街などに出る時はマスク着用が必須ですね。さて今回は、Tokyo Cabinetで実装したテーブル方式のデータベースについて紹介します。意外にどうして強力な機能なので、このネタは連載することを予告します。 テーブルデータベースとは 簡単に言えば、リレーショナルデータベースのテーブルのように、複数の列からなるレコードを格納できるデータベースです。SQLや表結合などの複雑な機能はサポートしませんが、そのぶん高速に動作します。つまり、DBMの速度で動くリレーショナル風データベースです(厳密にはリレーショナルデータベースではありません)。 TCの基となるハッシュデータベースは、単純なkey/value型のデータベースであり、つまりキーにも値にもスカラ(数値や文字列などの特に構造を持たない単一の値)しか格納することはできません

    DBMによるテーブルデータベース - mixi engineer blog
  • プラグインで独自ストレージを作ろう - mixi engineer blog

    OpenSocialとかC++0xとか世の中の流れが早すぎて、いろいろと勉強しなきゃなと焦りつつも、ついついピクミン2にはまってしまうmikioです。今回はTokyo Tyrant(TT)を使ってユーザ独自のストレージシステムを簡単に構築する方法について説明します。 プラグインとは オブジェクト指向プログラミングに慣れた人にとっては、インターフェイスと実装を分離することによってプログラムの拡張性や保守性を向上させる技法(データ抽象)は常識ですよね。その考えをさらに進めると、インターフェイスのみをプログラムに記述しておいて、具体的な実装は実行時に割り当てるという、いわゆるプラグイン(plug-in)という技法に至ります。プラグインでカスタマイズできる能力をプラガブル(pluggable)などと言ったりもします。 例えばTokyo Cabinet(TC)では、レコードの挿入、削除、参照といった

    プラグインで独自ストレージを作ろう - mixi engineer blog
  • Tokyo Cabinet

    Tokyo Cabinet is the successor of QDBM, a high performance database library similar to the DBM family. It also supports hash and B-tree databases and does not require any server process. The overall speed is improved compared to QDBM.

  • Kazuho@Cybozu Labs: Perl のテスト用に MySQL 環境を自動で構築するモジュール Test::mysqld を書いた

    ORM やウェブアプリケーション関連のライブラリなどのテストケースを書くにあたっては、 RDBMS へのアクセスが必要になります。しかし、SQLite のようなスタンドアローンのデータベースと比較すると、サーバ型データベースである MySQL に接続してテストを書くのは、既存の MySQL の権限設定やデータベース名を気にする必要があったりと、いろいろ不便です。そこで、MySQL のインスタンスをテンポラリディレクトリに自動生成し、テストが終わったら削除してくれる Perl モジュール Test::mysqld を書きました。こんな感じで使います。 use DBI; use Test::mysqld; use Test::More; my $mysqld = Test::mysqld->new( my_cnf => { 'skip-networking' => '' }, # TCP接続を

  • データベースパフォーマンスに関する、僕が知りうる限り最高の教科書 - レベルエンター山本大のブログ

    データベースの醍醐味は、パフォーマンスチューニングにあります。 チューニングによっては、同じ処理でも1時間掛かる場合もあれば、 1秒で終わるということもあり得る世界です。 僕はDBの魅力に取り付かれた者の一人です。 DBという技術の奥深さが気に入っています。 DBを極めると、どこの現場に行っても絶対に必要とされます。 また、どこの現場に行っても正解を導く方程式は一緒なので応用が利くのです。 しかし、その基原理を体系的に学べる手段はあまりありません。 OracleMasterやMCDBAといった資格試験でも学べることは限られていて あとはWebで調べるなりマニュアルを読むなりするしかありませんでした。 とくに肝であるパフォーマンスチューニングについては、 経験則でチューニングしている部分も多いです。 OracleSQLServer、MySQLと色々なDBのチューニングをしてきましたが、

    データベースパフォーマンスに関する、僕が知りうる限り最高の教科書 - レベルエンター山本大のブログ
  • 生 DBI ユーザーのための DBI Cookbook (1) - Yet Another Hackadelic

    ちょっと前まで DBI で非同期アクセスなエントリが各所で上がっていましたが皆さん如何お過ごしでしょうか? さてと、、、歴史的な経緯とか歴史的な経緯とかで生 DBI 相当を使ってる方もそれなりにいるでしょう。奥さん、大事な事なんで二度言いましたよ! DBI のインターフェースってまぁそんな使いやすい物じゃないんですが、工夫次第で出来る事もあります。 ちなみにサンプルデータベースとして、MySQL Documentation - Example Databases の world データベースを使っています。 fetchall_arrayref でデータ整形 まず以下のように使ってみます。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use DBI; use Perl6::Say; my $dbh =

    生 DBI ユーザーのための DBI Cookbook (1) - Yet Another Hackadelic