Hatena::ブログ(Diary)

テクノロジーと広義のデザイン! このページをアンテナに追加 RSSフィード Twitter

2012-01-28 POSTのクエリーをMySQLで文字列として保存

POSTで受け取ったクエリーをMySQL文字列として保存したくなりました。

その際に、カラムのデータ型をどうすべきか迷って調べました。

結論としては、MEDIUMTEXT型を使うとよさげ。

1)POSTのクエリーは最大で2MB(メガバイト)を想定すればいい(っぽい)→ 調べが少し甘いですが・・・

TOMCATがそうらしい。

出所: http://confluence.atlassian.com/display/CONF27/Max+size+of+HTTP+POST+request+and+Confluence+page+size

2)MySQL文字列データ型ではMEDIUMTEXTが ~16MBである模様

TINYTEXT 256 bytes

TEXT 65,535 bytes ~64kb

MEDIUMTEXT 16,777,215 bytes ~16MB

LONGTEXT 4,294,967,295 bytes ~4GB

出所: http://www.electrictoolbox.com/maximum-length-mysql-text-field-types/


ちなみに、node.jsで開発していてこんなかんじで使いたかったのです。

var express = require('express');
var app = express.createServer();
app.post('*',function(req,res){
    var queryString = JSON.stringify(req.body)
    // このqueryStringをMySQLのとあるカラムに保存したい
});

//実際にクエリーを使いたい時は、JSON.parseで文字列からJSONに戻してあげる
var queryString = ... // => MySQLから文字列を取得
var queryObject = JSON.parse(queryString);
var name = queryObject.name;