Define database schemas in declarative code. Use HCL, SQL or any ORM or language. Supports all popular ORMs, such as GORM, Sequelize, Django, SQLAlchemy, Hibernate, and more. Test your schemas and migrations using the Atlas testing framework.
軽量な時系列データベースエンジンをスクラッチで開発する機会があったので、どのように実装したのかを必要知識の解説を交えながらまとめていきます。 実装はGo言語によるものですが、本記事のほとんどは言語非依存な内容となっています。 モチベーション 筆者は時系列データを扱うツールをいくつか開発しています。その中の一つであるAliは負荷テスト用のcliツールで、メトリクスをクライアント側でリアルタイム描画できるのが特徴です。リクエスト毎にレイテンシーなどの計測結果が際限なく書き込まれてくる中、同時に一定のクエリパフォーマンスが求められます。 これは言ってしまえば、簡易クエリ機能付きのpush型モニタリングシステムを単一ホストで実現するようなものです。 以前までの実装ではヒープ上の可変長配列にデータポイントを追加していくだけだったので、当然ながら時間の経過とともにメモリ使用量が増加していく問題を抱えて
Go の database/sql パッケージ の DB 構造体 は、データベースへのコネクションプールを管理し、かつスレッドセーフ (goroutine セーフと言ったほうが良いのだろうか…?) にそれらの接続を使用できることを保証している。 ドキュメント にも次のように書かれている。 DB is a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines. こちらの基本的な実装内容と、動作を制御するパラメータについて調べてみた。 基礎知識のおさらい database/sql パッケージはデータストアの実装によらない一般的な SQL のインタフェースを提供している。具体的なデータストアへの接
Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL Next in database basics: 2. binary expressions and WHERE filters 3. indexes 4. a database/sql driver In this series we'll write a rudimentary database from scratch in Go. Project source code is available on Github. In this first post we'll build enough of a parser to run some simple CREATE, INSERT, and SELECT queries.
Go Conference 2018 Spring
golang 1.8 では database/sql に幾らかの新機能が追加されます。 キャンセル可能なクエリ データベースの型の可視化 複数の結果セット サーバへのping トランザクション分離レベル 名前付きパラメータ database/sql changes - Google ドキュメント https://docs.google.com/document/d/1F778e7ZSNiSmbju3jsEWzShcb8lIO4kDyfKDNm4PNd8/edit# 本記事では Golang 1.8 で追加される database/sql の変更内容と、go-sqlite3 での対応状況、利用する上での注意点等を書いていきます。 キャンセル可能なクエリ 実行が長いクエリがキャンセルできるようになります。各 API に Context のサフィックスが付いた物が提供されます。具体的には Que
DBから直接golangのモデルを生成するxoのご紹介¶ Webアプリを開発している時に、DBのモデル定義の方法にはいろいろなやり方があると思います。 xo は、 DBから直接 golangのモデル定義を自動生成するツールです。 PostgreSQL MySQL Oracle Microsoft SQL Server SQLite に対応しており、良く使われるRDBをほぼカバーしていると思います。 インストール¶ goのツールですので、 go get でインストールできます。 $ go get -u golang.org/x/tools/cmd/goimports (依存性のため) $ go get -u github.com/knq/xo
Go でリレーショナルデータベースを利用したアプリケーションを書いているとき、動的に SQL を組み立てたい場合には、いくつかの方法が考えられます: クエリビルダを使う。世の中にすでにいろいろ存在します。(そのためのライブラリなので)動的に生成するにはもってこいですが、この場合、それぞれのライブラリに合わせた書き方をしなければならないので読み手にもある程度負荷がある点、また、Go は言語として冗長に書くことをよしとする思想を持っているため、DSL 的な API との相性が悪いという欠点があります(map の組み立てが冗長、条件分岐する式が書けないなど)。また、一般にクエリビルダから生成される SQL がコードから想像しづらくなる問題もあります。 文字列連結や fmt.Sprintf を使う。発行される SQL は比較的分かりやすくなりますが、動的に組み立てると SQL プレースホルダとバイ
Ridgepole インスパイアの golang 用 DB スキーマのマイグレーションツールを作りました。 https://github.com/naoina/migu Migu は Ridgepole と同様に(バグが無い限り)冪等性が保証されています。 Ridgepole と違うところは、スキーマ定義を DSL ではなくて golang の struct で定義するところです。こうすることによって、モデル定義 = スキーマ定義となるので DRY になります。 使い方 下記を schema.go というファイル名で保存します。ファイル名は何でもいいんですが、ここでは schema.go を使います。package 名も何でも構いません。 package schema type User struct { Name string Age int } 次に migu_test というデータ
I am currently in the process of moving a single endpoint out of a large, monolithic Ruby on Rails app. That endpoint does the following, in order. Accepts an HTTP Post request.Parses the YAML content sent in the body by the client.Updates some database entries based on the contents of that YAML.Generates a hash that is a smorgasbord of different pieces of data.Marshalls that data to YAML.Sends th
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く