2019-01-01から1年間の記事一覧

【Amazon Redshift】分散スタイルの効果実証ログ

Amazon Redshift の分散スタイルのチューニング結果を手元で試したログ。 結論 分散スタイル設定の主目的は、ネットワークトラフィック抑制。 BIツールから投げられるような、取得する総データ量が軽微なクエリに対して、レスポンスの改善は期待できない。 …

【Amazon Redshift】列圧縮エンコーディングのディスクサイズ比較

AmazonRedshiftには「列圧縮エンコーディング」というチューニング用のパラメータがあり、 テーブル列ごとに適切なものを指定することでディスク保存サイズを低減できる。 読み込み対象あたりのディスクIO削減効果は、列圧縮エンコーディングの圧縮率が高い…

【Vue】Vue+vuecli+Vuex+Vuetify+TypeScript+ClassComponent+Golang+ginでもろもろやったときの参照文献

プライベートで、タイトル通りの技術を使ってS3をアプリから登録して簡単に閲覧できるビュワーを作成した。 GitHub - pakuyuya/s3-web-browser 最近のWeb技術は独自のスキームが進んでいて追っかけていなかった身としてはなかなか踏み出せなかったが、 手を…

【Amazon Redshift】CREATE VIEW文をCOMMENT文付きで自動生成するSQL

AWS Redshift utilsにビューのDDLを自動生成するSQLが公開されているが、 COMMENT文も欲しかったので過去に自作したものを公開。 ただ、SQL文に改行やインデントがはいらず、なんか微妙な感じ。 WITH v_generate_view_ddl AS ( SELECT derived_table4.schema…

【Ruby】メモリに余裕があるはずなのにCannot allocate memory で落ちたらFork()を疑う

事象 Amazon Linux上 RubyVM起動で、メモリ使用率が単体50%のプロセスを実行中、急遽「Cannot allocate memory」のエラーログが出力されて落ちる 追加調査してわかった事象 過去、バッチ実行中、一瞬(1分弱?)だけRubyのプロセスがそれまで使用していたメ…

【AWS Redshift】導入前に知っておくべきこと

AWS Redshiftを導入する前に知っておくべき、AWS Redshift の特性、長所、他所を開発・運用してきた中で要所っぽいところをいくつかTips的にまとめた。 字量が非常に多くて申し訳ないが、参考になれば。 RDBに比べて有用なケース/苦手なケース 下記のケース…

docker-compose+fluentdでバッチ処理をいい感じにログ収集しつつな構成サンプル

眠いのでもう必要なことだけをまとめる。 この記事について Docker-Composeを使った簡易なバッチシステムのテンプレート構築。 今回のサンプルは以下の構成。 1つのLinuxマシンに、Docker-composeを利用してPostgresql と fluentdを立てて、同ホストにて doc…

【AWS Glue】事前調査

AWS Glue とは サーバーレス(オンデマンド実行・実行時間課金)なETL向けサービス 実態は、フルマネージドなPyhton/ApacheSparkの仮想実行環境。 AWS手製のライブラリ/ランタイムがAWS上のリソースの取得やクエリにめっちゃくちゃ強く(例:S3のデータをロ…

【AWSAthena】事前調査

概要 AWS Athenaに関する事前調査まとめ Amazon Athenaとは S3に配置したデータを直接クエリするAWSのサービス。 巷ではフルマネージドHIVEとかいわれている。 S3 に置いたファイルを直接検索。1TB読み取りにより$5。ファイルが圧縮されていると更に低減 SQL…

【AWSRedshift】ソートキーまとめ

AWS Redshiftの「ソートキー」の概要、チューニングの勘所、デメリットを解説。 ソートキーとは何か AWS Redshift特有のテーブルへの設定項目。標準SQLにはない。 CREATE TABLE accesslog ( createat timestamp ENCODE raw, srcip varchar(16) ENCODE raw, u…

【Talend】MetaServletAPIでTACにジョブをコマンドベースで登録するシェル

※2019/05/30 更新 ETLツール Talendを用いてジョブ実行基盤を運用しているが、 WebのGUIを用いたジョブ登録がめちゃくちゃリスキー。 Nexusを用いれば解放されるらしいが、もろもろの制約で導入できずにいる。 幸いにも、Talend v7.1.1 の時点ではMetaServle…

プログラマはソースコード分割の神になれるか?

身内が回してきたツイートを見て一言「若いな」と返してしまった。 クソコード動画「共通化の罠」 https://twitter.com/MinoDriven/status/1127539251761909760 軽く後悔しながら悶々としていたら、 コード分割についてある程度まとまりつつあったので、つい…

「詳細設計書」なんて言葉はなくなればいい

煽りタイトルがついているが別に「ソースコードの内容を一語一句Excelに日本語化してでIf文ごとにブレークダウンしたりするドキュメント」をdisる記事ではない。 隣の火事 隣のプロジェクトでちょっとした炎上があったのを見たのがきっかけで、日々ドキュメ…

【Redshift】クエリのボトルネックがどこにあるか判断する

AWS RedshiftはパワフルなDBだが、いかんせんクエリ特性に対するパフォーマンスの影響がRDBと違い、RDB育ちのエンジニアにとってはチューニングに四苦八苦しがち。 クエリのどこが遅いかを、堅実に測定する方法を一例として紹介する。 まずはクエリ実行して…

Redshiftの記事を整理・削除します

Redshiftのパフォチュの記事を色々書くも、とっちらかって全然まとまっていないので整理にかかる。 手始めに、いくつか低クオリティな記事を削除。 これは残しておく https://blog.hatena.ne.jp/packpak/packpak.hatenablog.com/edit?entry=1739134597163035…

【MySQL】CentOS7.5にMySQL5.7 Community Edition を rpmパッケージで yum localinstalする

矛盾塊のようなタイトルだけどこれマジモンの要件なんだよ。 ※下記の記事を参考にさせていただきました。 https://enomotodev.hatenablog.com/entry/2016/09/01/225200 CentOS 7 に MySQL 5.7 を yum インストールして初期設定までやってみた https://weblab…

【VBA】ReDim した変数を LBound(ary) したら負ける

VBAってクソだなエントリー。 ReDim ary(0) VBAは可変長コレクションオブジェクトをサポートする代わりに、 一度確保した領域を再度拡張する ReDim が用意されている。 Dim ary() As String ReDim ary(10) このとき、ReDimで確保されるインデックスは「0~10…

【Java】java.sql.ResultSetから値を読み出すときメモ

JDBCは業務アプリや軽いデータ取得ツールを作るには、低レイヤすぎて面倒くさい。 特に値を読み出すところが面倒すぎてO/Rマッパに逃げた挙句、今日まともに使い方を理解したJavaおじさん5年目がメモ。 JDBCとは Javaの標準APIに組み込まれている、データベ…

【Redshift】SQLの実行時間明細を取得・可視化する

RedshiftのSQL実行時間の取得方法メモ。 ※Redshiftは日本時間で土曜日22:00に定期メンテナンスがあり、都度都度仕様変更が入ります。執筆時点の情報である旨ご承知おきください。 A. システムテーブルからログを取得する 1. queryidの特定 実行時間を見たいS…

はじめてVuejsアプリケーションを本格的に作った時の参考文献履歴

Vuejsのプロジェクトテンプレートを作りたい https://qiita.com/po3rin/items/3968f825f3c86f9c4e21 .vueファイルが意味不明すぎて怖い https://qiita.com/po3rin/items/3968f825f3c86f9c4e21 clickなどのイベント駆動で何か処理したい https://qiita.com/Sa…

【Docker】初めてdocker-composeでbuild+app runまでする構成を組もうとして挫折した

Go + VueなアプリをDockerでビルド用コンテナ+稼働用コンテナ+docker-composeするまでの過程で ハマったところをつらつらとログした記事。 世には素晴らしい日本語記事がいっぱいでているが、 今更やってみたの一例として、誰かの参考になればというモチベ…

【Docker】Dockerfile RUNで、BASHな環境変数を展開してコマンド実行する

恐らく禁じ手 ハマった事象 DockerFileを書くとき、ARGやENVな変数をコマンド内で使うときは $ENVNAME で書くが、 少なくともDocker verions 17.05.0-ceでは、Dockerfile中の$ENVNAMEはプリプロセッサ的に事前に展開してコマンド実行するようだ。 例 FROM al…

Linuxのbashシェルスクリプト/Windows batスクリプトの別スクリプトを呼んだときのカレントディレクトリと環境変数スコープ遷移

ハマった Windows batスクリプトの知見 setlocal / endlocal しない限り、環境変数のスコープが共有される 実験 カレントディレクトリを指す環境変数 CD で例にとる 構成 |`- main.bat `- subdir `- sub.bat main.bat @echo off echo [main.bat] current dir…

【vuecli】src配下にapplication configファイルを追加する

ハマった。 環境 $ npm list -g vue-cli E:\node_modules +-- @vue/cli-init@3.0.0-rc.10 | `-- vue-cli@2.9.6 `-- vue-cli@2.9.6 $ npm -version 6.4.1 やりたいこと vue cli を使ってテンプレート生成したプロジェクトに、vue用の application コンフィグ…

【Golang】CSVのDecode

[][]string へのDecodeで我慢できるのであれば、encoding/csv パッケージがそれなりに使える。 ファイル終端にいくとEOFする 引用符ありなしを自動解釈 引用符中のダブルクォート2つ重ねを1つにしてくれる 引用符中なら改行文字を何いれてもいい \はエスケー…

【Postgresql】マテリアライズドビュー

マテリアライズドビューとは 実行結果をテーブルと同じようにキャッシュして、普通のビューならテーブル結合などのコストをかけて実行するものを既に計算済みのデータを読むだけの状態にする機能。 実態はテーブルに似ていて、インデックスなどが張れる 一度…

C言語で標準入力がされているかを検知する

#include<stdio.h> int main() { if (feof(stdion)) { printf("input detacted from stdin"); } else { printf("no stream"); } return 0; }</stdio.h>