Amazon ElastiCacheを使おう

create an Amazon ElastiCache Redis node and connect to it from an Amazon EC2 instance

serviceからelasticacheを選ぶ

クラスターエンジン
redis
データベース、キャッシュ、メッセージブローカーとして使用されるインメモリデータ構造ストア

Memcached
動的なウェブアプリケーションの高速化に使用される高パフォーマンスの分散メモリオブジェクトキャッシュシステム。

redisを選択する。

node typeはcache.t2.micro
リプリケーションはnone

ほう

セキュリティグループ
nodeを6379にする

ec2 リモートデスクトップ接続

すげー

s3を画像のcdnとして使おう

まずs3のバケットに画像をuploadして、パブリックのアクセス権を付与します。

できました。

取得した画像を別のドメインから接続します。

<img src="https://s3-ap-northeast-1.amazonaws.com/capital-technology/20181010114846.gif">

OK!

AWSには、ElastiCacheがあるようですね。
elastiCacheとは?
>ElastiCache は、クラウド内の分散型インメモリデータストア環境またはインメモリキャッシュ環境のセットアップ、管理、およびスケーリングが簡単になるウェブサービス
redisみたいなものか?

キャッシュとは?

キャッシュとは?
-> パソコンやスマホに一時的にウェブページのデータを保存しておいて、次に同じページを開いたときに素早く表示させる仕組み

メタデータでキャッシュされないように指定することができる。

<head>
	<meta http-equiv="Pragma" content="no-cache">
	<meta http-equiv="Cache-Control" content="no-cache">
</head>
<body>
hello
</body>

では、続いて、s3を使ってみましょう。

ER図を書いていこう

VARBINARY型:
可変長バイナリバイト文字列
0x00が末尾に付けられることはありません。空白と0x00は異なりますのでデータの末尾に空白が合った場合も特別扱いされることはなく、空白に該当するコードはそのままバイナリデータとして格納されます。

mstはマスターの略
rclはrecruite?

mediumtext
文字型ラージオブジェクトカラム、最大長は 16777215 (2^24 – 1) 文字。

perlでinsertするときに文字化け

db->do(“set names utf8”);をいれる。

my $user = 'root';
my $passwd = '';
my $db = DBI->connect('DBI:mysql:count:localhost', $user, $passwd);
my $sth = $db->prepare("INSERT INTO accounts(password, email, name, name_kana) VALUES ('password2','test@gmail.com2','横山健','よこやまけん')");
$db->do("set names utf8");
$sth->execute;

$sth->finish;
$db->disconnect;

mysql> select * from accounts;
+—-+———–+—————-+——————–+———————————————+
| id | password | email | name | name_kana |
+—-+———–+—————-+——————–+———————————————+
| 1 | password | test@gmail.com | 横山健 | よこやまけん |
| 2 | password | testgmail.com | 横山� | よ�や��ん |
| 3 | password2 | testgmail.com2 | 横山� | よ�や��ん |
| 4 | password2 | testgmail.com2 | 横山健 | よこやまけん |
+—-+———–+—————-+——————–+———————————————+
4 rows in set (0.00 sec)

おお、文字化けが治った。
ところで、@がインサートできんぞ。

DBの設計

まずDBの設計をして、mysqlにテーブルを作っていきます。

create database count;
use count;
create table accounts(
id int auto_increment not null primary key,
password varchar(255) not null,
email varchar(255),
name varchar(128),
name_kana varchar(128)
);
create table campaigns(
campaign_name varchar(255) not null,
campaign_id varchar(20) not null,
device char(1),
distribution date,sho
age_start int,
age_end int,
gender char(1)
);
create table clicks(
campaign_id varchar(20) not null,
mail_open int,
mai_click int
);

mysql> show tables;
+—————–+
| Tables_in_count |
+—————–+
| accounts |
| campaigns |
| clicks |
+—————–+
3 rows in set (0.00 sec)

#!/usr/bin/perl --
use strict;
use DBI;

print "Content-type:text/html\n\n";
my $user = 'root';
my $passwd = '';
my $db = DBI->connect('DBI:mysql:count:localhost', $user, $passwd);
my $sth = $db->prepare("INSERT INTO accounts(password, email, name, name_kana) VALUES ('password','testgmail.com','横山健','よこやまけん')");
$sth->execute;

$sth->finish;
$db->disconnect;

print("finish\n");

mysql> select * from accounts;
+—-+———-+—————-+——————–+———————————————+
| id | password | email | name | name_kana |
+—-+———-+—————-+——————–+———————————————+
| 1 | password | test@gmail.com | 横山健 | よこやまけん |
| 2 | password | testgmail.com | 横山� | よ�や��ん |
+—-+———-+—————-+——————–+———————————————+
2 rows in set (0.00 sec)

文字化けしてますな。

ER図 Entity Relationship Diagram

ER図とは、「データベース設計(データモデリング)で使う設計手法」
「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」と呼ばれるオブジェクトで構成されており、ER図を活用してデータ構造を俯瞰的に設計する

やべー、このあたりを使いこなせば完全に素人ではなくなるなー