nanokvs-jdbc

nanokvs-jdbcとは

メールをKey-Valueストアとして利用するためのJDBCドライバーです.
メールアカウントを簡易データベースとして利用できます。
insert,select,deleteに対応しています。
updateには対応しません。

利用シーンとしては全国の端末からDBに日々の情報を登録し、
中央の端末で登録情報を集計するシステムでの利用を想定しています。
利用するためにはメールアカウントが必要です。
gmailのpop3,smtpでの動作確認済み。
pop3プロジェクトでのpop3動作確認済み。
smtpプロジェクトでのsmtp動作確認済み。
パースのテストやエラー処理の実装がまだなので、バイナリでの配布はしばらくしません。

ライセンス

ソースコード

使用方法

Demoサンプルソース(Gmail)


//MailDriverを取得
try {
	Class.forName("com.uchicom.nanokvs.MailDriver");
} catch (ClassNotFoundException e1) {
	e1.printStackTrace();
	return;
}
Properties properties = new Properties();

//検索、削除用設定(POP3)
properties.setProperty("pop3.user", "recent:★Gmailユーザ★@gmail.com");
properties.setProperty("pop3.pass", "★Gmailパスワード★");
properties.setProperty("pop3.ssl", "true");

//追加用設定(SMTP)
//SMTP認証が必要な場合
properties.setProperty("smtp.auth", "plain");
properties.setProperty("smtp.user", "★Gmailユーザ★@gmail.com");
properties.setProperty("smtp.pass", "★Gmailパスワード★");
properties.setProperty("smtp.ssl", "true");

properties.setProperty("smtp.helo", "★任意(自分のメールアドレスドメイン名など)★");
properties.setProperty("smtp.mail_from", "<★自分のメールアドレス★>");
properties.setProperty("smtp.rcpt_to", "<★Gmailユーザ★@gmail.com>");
properties.setProperty("smtp.from", "<★自分のメールアドレス★>");
properties.setProperty("smtp.to", "<★Gmailユーザ★@gmail.com>");

//接続先情報
try (Connection con = DriverManager.getConnection("jdbc:nanokvs://pop.gmail.com:995/★データベース名★,smtp.gmail.com:465/★データベース名★", properties );) {
	Statement statement = con.createStatement();
	//検索(POP3だとメールの数が増えれば増えるほど遅くなる。1件で1秒ぐらい)
	ResultSet result = statement.executeQuery("test{test1:1,test2:2}");
	while (result.next()) {
		System.out.println("文字列での取得");
		System.out.println(result.getString("test1"));
		System.out.println(result.getString("test2"));
		System.out.println(result.getString("test3"));
		System.out.println(result.getString("test4"));
		System.out.println("番号指定での取得");
		System.out.println(result.getString(1));
		System.out.println(result.getString(2));
		System.out.println(result.getString(3));
		System.out.println(result.getString(4));
	};

	//削除
	statement.executeUpdate("d test{test1:1,test2:2}");
	//追加(1秒程度)
	statement.executeUpdate("i test{test1:1,test2:2,test3:3}");
} catch (SQLException e) {
	e.printStackTrace();
}

recent:を指定しないと、次回実行時に参照できない。Gmailのメールボックスには残る。
ユーザ名にrecent:を指定するとRETRで取得した後でも、過去30日間のメールならば取得可能。

プロパティ値

keyvalue
pop3.userPOP3ユーザ
pop3.passPOP3パスワード
pop3.sslPOP over SSLを行うかどうか
smtp.authSMTP認証方法、現状は"plain"のみ
smtp.userSMTPユーザ
smtp.passSMTPパスワード
smtp.sslSMTP over SSLを行うかどうか
smtp.helo自メールアドレスのドメイン名など
smtp.mail_from送信元のメール情報
smtp.rcpt_to送信先のメール情報
smtp.fromメールヘッダの送信元情報
smtp.toメールヘッダの送信先情報

検索構文

box名 jsonオブジェクト(検索条件)
例)
test{a:1, b:2}

追加構文

i box名 jsonオブジェクト(登録情報)
例)
i test{a:1, b:2}

削除構文

d box名 jsonオブジェクト(削除条件)
例)
d test{a:1, b:2}