Oracleで文字列を入れるための項目属性 Oracleのデータベースの項目属性を定義する時、VARCHAR2()があります。 VARCHAR2()は、可変長の文字列です。 ()の中の数字が、挿入できるbyte数となります。 このByte数を超えると、ORA-12899値が大きすぎますというエラーがでます。 では、実際何文字入るのでしょうか。 VARCHAR()とVARCHAR2()は何が違うの? 本論に行く前に、少し余談です。 例えば、MySQLでは文字列の属性としてVARCHAR()があります。 しかし、OracleではVARCHAR2()です。 何故、Oracleは2なのでしょうか? 実は、Oracleも以前はVARCHAR()で定義していました。 しかし、ある時から廃止になり、現在はVARCHAR2()のみが利用されています(経緯不明)。 OracleのVARCHAR2(10)は何
データ ソースにアクセスする ActiveX Data Objects (ADO) は、Web ページにデータベース アクセス機能を追加するための、使いやすく拡張性の高いテクノロジです。ADO を使用すると、データベース、スプレッドシート、シーケンシャル データ ファイル、または電子メール ディレクトリなどの、OLE DB 準拠のデータ ソースに接続するための拡張性のあるスクリプトを簡潔に記述できます。OLE DB は、システムレベルのプログラミング インターフェイスであり、データベース管理システム機能を公開するための COM インターフェイスの標準セットを提供します。ADO のオブジェクト モデルを使用すると、VBScript または JScript などのスクリプト言語を使用するこれらの COM インターフェイスに簡単にアクセスして、Web アプリケーションにデータベース機能を追加する
JDBCのメタデータは、データベース(RDB)の(データでなく)定義自体を扱う。 メタデータを利用して、テーブルの項目一覧だとか属性だとかを取得することが出来る。 DatabaseMetaDataはConnectionから取得できる。 ResultSetMetaDataはResultSetから取得できる。 テーブルの項目一覧 プライマリキー項目 レコード一意識別項目 項目の型の取得 [2009-04-10] PreparedStatementの項目の型 [2009-10-25] 自動採番値の取得 [/2010-07-24] テーブルの項目一覧を取得する例 import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; Connection conn = ~; DatabaseM
CSVファイルからOracleのテーブルへデータを流し込むツール。 大量のinsert文を発行するよりは、断然高速。 データであるCSVファイルや固定長ファイルと、ロード方法を指定するコントロールファイルを用意 して実行する。 (CSVファイルからのロードはこのSQL*Loaderが使えるが、CSV出力には標準的な方法は無いらしくて、select文で加工する方法がよく使われるらしい。 このSQL文をいちいち書くのは少々面倒なので、SQL生成用Excelマクロを作ってみました) コントロールファイル CSVファイルの各項目とテーブルの項目との関連付け等を指定する。 (コントロールファイルをテキストエディタで書くのはけっこう面倒なので、コントロールファイル作成用Excelマクロを作ってみました(CSVファイル用、固定長ファイル用)) 例)emp.ctl: OPTIONS(LOAD=100,SK
■前置き JavaにClassクラスが存在することを大抵のJava技術者はご存知だと思いますが、実際、Classクラスとは何なのか、いつ、どうやって生成されるかなど、知らない人がほとんどではないでしょうか? 多分、使ったことがあるのは、主に以下の2パターン 1.DB接続時にドライバクラスをforName()する。 2.インスタンスからクラス情報を取得する 1は多分、みんな、おまじないのように使ってる。 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); って感じで、よくわからないけど、上記のようにドライバクラスを指定してからじゃないとDB接続できないから、おまじないとして使ってる。という人が多いと思います。 2は用途はいろいろですが、インスタンスからgetClass().getName()してクラス名を取得して、ログに出したり、なんちゃらしたりだと
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? システムエンジニア Advent Calendar 2015 - Qiita 20日目の記事です。 システム開発をしていると、他システムのマスタやトランザクションデータが必要となる場合がよくありますね。 システム間のデータ連携としては、 リソース共有(データベース共有、ディスク共有) アプリケーション連携(RPC、Web API、MOM1) ファイル連携(CSV連携、etc) などの方法がありますが、ここではデータベース共有を実現するためのデータベース連携方式について考えてみたいと思います。 データベース連携方式について 既存システムが
なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ
https://builderscon.io/tokyo/2017/session/c8f36693-32aa-4bf1-816a-4966f3859926 どんなシステムを作るときでも今や必ずRDBを使うと言っても過言ではありません。 しかしRDBは便利な半面、リファクタリングが難しくレガシィシステムの中心として手を付けれない状況になっていませんか? RDBアンチパターンにハマるとアプリケーションへの影響も大きく、パフォーマンスやコードの品質にダイレクトに影響します。 そこで今回は ・RDBアンチパターンの紹介 ・RDBアンチパターンが引き起こす問題 ・如何にRDBアンチパターンをリファクタリングするか ・リファクタリング後の未来 ・明日からDBリファクタリングするために必要な事 をお話したいと思います。 既存システムに棲みつくRDBアンチパターンを如何に攻略していくか… そんな明
multiversionの基礎 自分用のMulti Version Concurrency Controlのまとめ MVCCの基礎理論をまとめておく。今後はここを参照する。 基本的にTX本とCC本から必要な部分をまとめている。 (一回まとめてるけど、Multi-version Conflict Serializability - 急がば回れ、選ぶなら近道 前回はそもそもCSRとの混線を防ぐという意味だったので、今回はもっと基本的なところからさらに。今回はCSRとの関係はガン無視。) 前置き:自分の考えを記録的に 基本的にMulti Version Concurrency Control (以下MVCC)は理論先行だった。これはMVCCのオーバへードがsingle-versionのパフォーマンスを凌駕できなかったことによる。以下の理由によりMVCCが今後は伸張すると考えている。 1.メモリー
これまで階層構造データはリレーショナルデータベースでうまく扱えませんでしたが、その解決策としてジョー・セルコが提案したのが「入れ子集合モデル」です。この手法を紹介した『プログラマのためのSQLグラフ原論』の刊行にあたり、翻訳されたDBエンジニアのミックさんに入れ子集合モデルの将来性についてうかがいました。 なぜRDBで木と階層構造を扱う手法が1冊の書籍に? ――『プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために』についてミックさんにうかがいます。最初に、本書がどういう本なのか教えていただけますか? ミック:内容としては、リレーショナルデータベース(RDB)でグラフ構造の一つである木と階層構造を扱うための方法論「入れ子集合モデル」をメインに解説しています。RDBには大きな問題があり、入れ子集合モデルがそれを解決しうる手法だと見込まれています。その問題と
タイトル通りですが、とりあえず列挙 STATSPACK的なもの、ないの? ありません。 価格差考えてください。 TuningPack的なもの、ないの? (ry 過去に実行したSQL、誰がいつ実行したか追えないの? いわゆる監査ログってやつ。 無料でやりたいなら、generarl_logで全SQL吐いてください。 あとは有償/無償でプラグイン追加すればできるようになりますよ。 I/Oなり、なんらかのリソースを食うけどね。 監査やらない前提で必要スペック見積もっておいて、事故ってから騒ぐのやめてください。 クエリ遅いんだけど! Oracleと同じ感覚で一文でバッチリ取ってくる数百行のクエリ書いて悦に入ってないで、実行計画まず見てくれ。 MySQLで相関サブクエリが死ぬほど遅いってことは、一度でも自分で調べる意思があってググッていれば、嫌でも目に入るだろ。 まさにggrks(死語? この相談を受
めっちゃよくまとまっているので、大変助かりました。 blog.mogmet.com t-wada氏の「とりあえず削除フラグはアカン」については、僕も全く同感です。論理削除をしなければならないビジネス上の理由がスッポリ抜け落ちている。「とりあえず削除フラグ立てて何かあれば戻せるようにすればいいンゴ」ってのは論理設計を放棄していると言い換えても良いし、「ユーザーの言葉ではない」という指摘も重要。こちらに書かれています。 ledsun.hatenablog.com じゃ、フラグやめてどーすんのって話。フラグを立てたくて立てる人はおらん(はず)。「削除フラグを追加するとSELECT時に常にWHERE句で削除フラグを引っ掛ける必要があるのでクソ」→「削除日や状態カラムを使おう」では解決にならん。t-wada氏の資料でも解決策で上げられてたけど「×」マークがついてます。下記に変わっても誰も嬉しくないと
# -*- coding: utf-8 -*- import os, sys, time import apsw connection=apsw.Connection(":memory:") cursor=connection.cursor() ### ### Virtual tables ### # data = [ [1, 'test1', 'categoryA'], [2, 'test2', 'categoryA'], [3, 'test3', 'categoryA'], [4, 'test4', 'categoryB'], [5, 'test5', 'categoryB'], [6, 'test6', 'categoryB'], [7, 'test7', 'categoryB'], [8, 'test8', 'categoryC'], [9, 'test9', 'categoryC
MyNA・JPUG合同DB勉強会 in 東京を開催してきました。 遂に東京進出!!中国地方に収まらないスケールのデカさを魅せつけてきました。 ただ初の関東開催ということで関東の洗礼を受けましたw — そーだい@初代ALF (@soudai1025) 2015, 6月 26 それでも平日の日中に雨が降っていたにも関わらず40名以上の参加者がありました。 本当に皆様、ご参加して下さりありがとうございました。 この勉強会は会場を貸していただいたDMM.com ラボ様とMyNAの梶山さんのお陰で開催することが出来ました。 本当に良い経験が出来ました、ありがとうございます。 また所属しているまほろば工房には協賛費を出してもらいました。 お陰でドタキャンに怯える事無く、上手く乗り切る事が出来ました。 関東でイベントを開くときは ドタキャンがあること前提で対応できる仕組みをつくる お金の事に怯えなくて住
Web アプリケーションとは切っても切れないセッション機構。DB ベースでセッション管理を行なって得られた知見と、それを元に考察した結果をまとめてみます。 セッションデータの特性 DB で管理される他のデータに比べ、セッションデータはかなり特殊です。主な特徴は次のような感じ。 データが増加するのが速い 定期的な削除が必要 頻繁に更新される リクエスト毎に読みに行く必要がある このデータを読めないとアプリケーション全体にアクセスできない アクセス頻度が高いということです。あと、1つ目の特徴からセッションデータについては意識的に管理してやる必要があります。 現在の環境 アプリケーションの領域が少し特殊で、セッションデータがやたらたまります(ユーザ数何百万のサービスとかそういうのではないです)。 RDBMS MySQL 4.0.22 ストレージエンジン InnoDB レコード数 6千万 テータサ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く