「楽しく楽にcoolにsmartに」を理想とするprogrammer/philosopher/liberalist/realist。 好きな言語はClojure, Haskell, Python, English, français, русский。 読書、プログラミング、語学、法学、数学が大好き! イルカと海も大好き🐬
はじめに 皆さん、SQLチューニングしてますか?(唐突) 私は仕事柄RDBMSのSQLチューニングをすることが多いのですが、たまにチューニングの一環で SQL文の書き換え をすることがあります。 その際に問題になるのが、書き換えたSQL文が等価であるかどうかの確認が大変なことです。 SQL文を書き換えた場合には、想定通りの結果を取得できるか確認するために、テストをやり直す必要があります。 これが開発早期のフェーズならまだましなのですが、結合テスト以降だと手戻りも多くかなりコストがかかりますし、既に本番運用が始まったシステムともなると、テスト自体が困難なこともあります。 また、複雑なSQL文だと網羅的なテストケースを作成すること自体が困難であるため、完全に正しいと確信することはできません。 なので、SQL文の書き換えの正しさを証明する良い手段はないかと考えていました。 SQLチューニングとは
参考 : Frequently asked questions 加えて wasm はパフォーマンスの他に移植生も考慮されて設計されています。これによって C++ などでクライアント向けに実装された SDK なども Web に移植できる可能性も生まれます。他にもゲームの SDK, 画像コーデック, 機械学習のモデル、言語ランタイムなども対象にできるでしょう。 とはいえ現実世界で使えているのか Google みたいなトップクラスの技術力の会社だけじゃない?と思われるかもしれません。次はプロダクションの例を調べてみます。 プロダクションでの導入例 Web アプリではまだそこまで実装例は多くないですが、着実にプロダクションでの使用例は年々増えているようです。Google は Meet だけでなく Earth でもプロダクション投入しているようで流石ですね… Google Earth Google
はじめに SQLite3 くらい楽に扱えて、PostgreSQL みたいにネットワーク経由で使える物ないかなーなんて思ったりする事ないですか?ありますよね、あるんです。 postlite このニーズに答えてくれるのが postlite です。postlite を使うと SQLite3 で作られたデータベースファイルを、PostgreSQL の様に扱えます。 仕組みは至って簡単で、僕が開発している go-sqlite3 に PostgreSQL の通信プロトコルのガワと、仮想テーブルを使って PostgreSQL のスキーマを疑似しています。 インストール postlite は go-sqlite3 の vtable を使います。ですので、go install ではなく postlite の README.md に書かれた手順を使わなければなりません。
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, cs_name) だけして mysql_real_connect(mysql, ...) した後SHOW VARIABLESしてみたら接続のcharsetが設定済みの挙動をするんやけどmysql_real_connectからの一連のコード読んでもどこでそれが起きるのかわからん誰かたすけて🥲https://t.co/ZScoD3tIQ8— Ryuta Kamizono (@kamipo) February 20, 2021 MySQLのハンドシェイクパケットにcollation_idを1バイトだけ入れられるところがあって、charset name のデフォルトの collation_id を送っています。 クライアントとサーバーのバージョンが違うとデフォルトのcollation_idが違うことがあって
One-liner for running queries against CSV files with SQLite という記事で紹介されていた、ワンライナーを使って CSV ファイルに対して SQL クエリを実行する方法。 $ sqlite3 :memory: -cmd '.mode csv' -cmd '.import taxi.csv taxi' \ 'SELECT passenger_count, COUNT(*), AVG(total_amount) FROM taxi GROUP BY passenger_count' ソース元に記述されてる通り、taxi.csv を GitHub からダウンロードして試すことができる。7z で圧縮されていて解凍する必要がある。 SQLite は通常ストレージディスク(SSD とか)上に保存して利用するのが一般的だが、SQLite 側で用意さ
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.
Free Postgres Databases Author Name Kurt Mackey @mrkurt @mrkurt Author Name Chris Nicoll Image by Annie Ruygt Postgres on Fly.io is now free for small projects. The hard part about free Postgres is storage, so this post is also about free storage. Read about it here, or try us out first. You can be up and running in just a few minutes. We like building side projects and also hate paying for hostin
株式会社HAPPY ANALYTICSの小川卓(id:ryuka01)です。 今回は、全2回で Google アナリティクス4(以下「GA4」) × BigQuery に関して紹介をしていきます。 第1回は、BigQueryについての基本的なご説明と、GA4連携におけるメリットなどについてご紹介していきます。 GA4 × BigQuery を活用することで、オウンドメディアの分析や効果の可視化に大きく役立つと思いますので、ぜひ参考にしてみてください。 BigQueryとは? 注目される3つの理由とBigQueryの料金体系 GA4と連携するメリット・デメリット 主なメリット GA4のデータを集計前の状態で恒久的に保存することができる GA4の画面だけでは出しにくい(出せないあるいは出すのに手間がかかる)データを簡単に出せる GA4のデータを他のサービスと連携することが可能になる 上記に伴い
アプリケーションが想定しない文字列を実行することにより、データベースを不正に操作する攻撃はSQLインジェクションと呼ばれ、攻撃によってクレジットカード情報や住所などの重要な個人情報が流出した事例も存在します。「Lord of SQLInjection」は、そんなSQLインジェクションを駆使してダンジョンを攻略していくウェブサイトです。 Lord of SQLInjection https://los.rubiya.kr/ まずはLord of SQLInjectionにアクセスして「[enter to the dungeon]」をクリック。 Lord of SQLInjectionを利用するのは初めてなので「Join」をクリック。 Lord of SQLInjectionで使用するID、メールアドレス、パスワードを入力して「Join」をクリックします。 先ほど登録したIDとパスワードを入力
Software Design (ソフトウェアデザイン) 2022年06月号の「後悔しないAWSデータベースの選び方 RDSとDynamoDB,使い分けのポイントを徹底解説」について AWSRDSnosqlDynamoDBAurora 初めに TwitterのDB界隈で少し話題になっていた特集の記事について、個人的に気になった指摘事項の一覧です。 記事自体は限られた紙面数で簡潔に読みやすくまとまっており、特にAurora/RDSについては要注意なポイントについてもまとめられていてわかりやすいものでした。 しかしながら、私知識と経験の範囲内での判断で、説明不足や技術的に誤解を招く表現等が見られたのでまとめてみます。 ※執筆者は普段の業務も忙しい中で限られた時間、紙面数で対象読者に向けて記事をまとめるので必死でしたでしょうし、どんな人でもどうしても経験や知識の範囲は限られてしまうことから、誰も
MySQLではレプリケーションがよく利用されます。また、アプリケーションは負荷分散のために、ソースだけでなくレプリカを参照系として利用することも多いです。しかし、レプリケーションは遅延するリスクがあります。そのため、アプリケーションは高負荷やロングトランザクションによる想定外の遅延が起こることを考慮して、設計や実装を検討しなければなりません。 MySQLでは遅延レプリケーションをサポートしています。遅延レプリケーションとは、ソースよりもレプリカへの適用を指定した時間だけ意図的に遅らせることができる仕組みです。ステートメント単位ではなく、トランザクション単位で遅延を発生させます。ソースへのトランザクション実行から指定した時間後に、レプリカに対してそのトランザクションを適用することになります。トランザクション内の各ステートメントは待機時間なく実行されます。 今回はこの遅延レプリケーションの設定
Dolt https://github.com/liquidata-inc/dolt Doltの特徴 Github for data(データをホストするサービス)といえば、KaggleやGretel(ローンチ予定)など注目されるプロダクトは数多くありますが、「Dolt」は、RDBのデータやスキーマなどをコミットとして管理できる、いわばGit for dataのプロダクトになります。 オープンソースとして提供されており、自身でホストすることができるほか、クラウドベースのストレージソリューションとして「DoltHub」の運営も行っています。 https://www.dolthub.com/ DoltHubを使ってみる 数は多くはないものの、すでにいくつかデータが登録されています。 もちろん、リポジトリはクローンすることが可能。ほとんどGithuライクに使うことができます。 こちらがプロジェクト
経緯 ここ6,7年くらいはバックエンドに関してはRails + EC2/ECSあたりのAWS環境を中心に過ごしてきたが、昨今はフロントエンドでReact/Vue + TypeScriptを書く機会も増えている。なのでこの際NestJS等でバックエンドを書けるようになれば言語のコンテキストスイッチの切り替えが容易になりそうと思った(ちなみにモバイルアプリはFlutterで書くのでDartだが、ではDartでバックエンドを書くかと言われると一人でそんな勇気はないわ...となるのでひとまず置いておく) 最近はinputとoutputを型注釈によって守れたりすることの主に開発体験方面への恩恵が個人的に大きくて、Rails以外で安住の地を見つけたいとは予々思っていた。なので先に挙げたNestJSに全ベットするわけではないにしろ何かしらフレームワークは試していきたい。 AppEngineは大昔に少し触
今回はMySQLの怖い話(注意点)について書いていきます。知っていれば大丈夫! 具体的には以下の点について書いていきます。 デフォルト設定では大文字と小文字を区別しませんNULLと空文字は別ものですIN句の中に大量の値の入れるとパフォーマンスが劣化するREPLACE句の挙動CONCATで文字列連結時に、ひとつでもNULLな項目があると、結果はNULLになるUNIQUE インデックス制約では、文字列の後のスペースが無視される知っていれば大丈夫なので、1つずつ確実に理解していきましょ★ デフォルト設定では大文字と小文字を区別しません検索時に「hoge」をキーとして検索した場合、テーブルデータに「hoge」「HOGE」「Hoge」があったとすると、全てヒットします 大文字・小文字を区別せずに検索しますUNIQUE インデックスがあるテーブルにデータ登録する場合、テーブルデータに「hoge」がある
1ヶ月毎に外見が大きく変化することで評判。AppBrewでマーケティングチームのリーダーをしている木全(きまた)です。直近はロングウルフからハンサムショートに変貌しました。 さて本日は、以前テックブログで取り上げたSQLテストのお話の続編で、SQLテストLv.1を新設したお話をします。 tech.appbrew.io 3行でわかるSQLテスト👏 非エンジニア向けのAppBrew独自規格のSQLテスト Lv.2は毎月5,000円、Lv.3は毎月20,000円の賞与がもらえます AppBrewは従業員への成長・学習の支援や投資を積極実施中! 最高レベルだと20,000円です。大きいですよね、月に20,000円......。 そんな感じで、もともとSQLテストという制度はあったのですが、改めて「SQLようちえん」こと、SQL Lv.1講座及びLv.1テストが生まれた経緯をお話していきます。 あ
こんにちは。河内です。 最近はデータ基盤の構築も取り組んでいたりします。 社内では他の DWH が使われている事例がありますが、今回の基盤ではデータソースとの親和性や価格面などを考慮し BigQuery で行くことにしました。 BigQuery 上で多くのデータを順次変換してデータを生成するために何らかのワークフローエンジンが必要でした。 社内の他のシステムではワークフローエンジンとして Digdag を採用している例が多いですが、このシステムでは Kubernetes 上でサービスを運用しているため、当初(2020年12月)は Argo Workflow 上でクエリを順次実行することを構想していました。構想中に Dataform が Google に買収され、無料で使えるようになったというニュースが飛び込んできたため、触って感触が良いことを確かめた後、Dataform を使っていくことに
こんにちは、DATA-SREチームの塩崎です。最近気になるニュースは「ネコがマタタビを好む理由が蚊を避けるためだった1」です。 さて、皆さんはデータ基盤で集計した結果をどのようにして確認していますか。LookerやPower BIなどのBIツールを使って綺麗なダッシュボードを作成している方も多いかと思います。しかし、全員が毎日確認すべき数値はSlackなどの全員が日常的に目にする場所へ掲げたいです。本記事ではBigQueryとSlackを連携させる機能をノーコードで作成する方法を紹介します。 従来手法 BigQueryで集計した結果をSlackに通知するためにはGoogle Apps Script(以下、GAS)を用いるやり方が現在では主流です。GASの文法はJavaScriptとほぼ同じであり、普段分析をメインで担当している人たちには馴染みの薄い言語です。また、Cloud Functio
Next.js blurs the lines between client and server. It supports pre-rendering pages at build time (SSG) or request time (SSR). Prisma is the perfect companion if you need to work with a database in a Next.js app. You can decide whether to access your database with Prisma at build time (getStaticProps), at request time (getServersideProps), using API routes, or by entirely separating the backend out
最近は、会社などの組織において仕事の指示をする場合に、単に上司が命令をするだけでは組織は動かないと言われています。部下に仕事をしてもらうには--そう、まさにこの「してもらう」の気持ちこそが本質なのですが--「命令」ではなく「依頼」の形を取ることで、お互いに気持ちよく仕事をすることができ、より良いチームとなるのです。 この世の中の流れは近年、ソフトウェアの世界にも強く適用されるようになってきました。ソフトウェアに於いても、常に、より中立的な立場での対応が求められてきています。 MySQレも例外ではなく、最近の修正ではレプリケーションの master-slave を source-replica と呼ぶように変更したり、blacklist を blocklist に変更したりなどの話題を目にした方も多いと思います。 これら一連のポリティカリーにコレクトな対応に今回新たに加わったのが、冒頭で紹介
Cloudflare、CDNエッジで稼働するSQLiteベースのRDB「Cloudflare D1」発表。ユーザーの近接CDNエッジに自動でレプリカを分散配置、高速アクセスを実現 CDNベンダのCloudflareは、同社のCDNエッジ上にSQLiteベースのRDBサーバ機能を提供する新サービス「Cloudflare D1」を発表しました。同社にとって初めてのデータベースサービスです。 Today, we’re excited to announce D1, Cloudflare’s first SQL database, designed for Cloudflare Workers. https://t.co/KwehTYQhEt #PlatformWeek — Cloudflare (@Cloudflare) May 11, 2022 Cloudflare D1はマネージドサービスと
00:00 - Introduction 01:45 - The Battleship 02:49 - NP-Complete Problems 06:24 - Building SQLite V1 07:54 - Motorola Phones 09:40 - America Online Phones 11:12 - Symbian OS and Nokia 13:01 - The Bus Factor and the Consortium 15:11 - Enter Android 17:05 - Guys, This Is Important 18:18 - Testing and Aviation Standards 21:29 - Billions of Tests 25:30 - Building From First Principles 28:05 - B-Trees a
はじめに この記事では、7月にリリースした、さくらのクラウドで使える機能の1つである「エンハンスドデータベース(TiDB)」というサービスについて紹介します。サービスの紹介に加えて、その裏で使っているTiDBという分散データベースの技術についても簡単に触れようかなと思っています。 分散データベース / NewSQLについて NewSQLとは さて、皆さんは「分散データベース」とか、あるいは「NewSQL」とか、そういった単語を耳にすることがあるでしょうか?ということでまずはこのお話をしたいと思います。 NewSQLと呼ばれているものはどういったものかといいますと、SQLをインターフェースとするという特徴を持っていて、データベース(例えばMySQLやPostgreSQLなど)と同じように強い整合性を持ち、トランザクションをサポートしていて、かつ分散データベース(分散型のリレーショナルデータベ
はじめに 「未経験だけど、エンジニアになりたい」という人に、僕がまずやってもらっていることを、この記事にまとめてみました。 「習得してほしい」というのももちろんですが、何よりも自分自身がエンジニアに向いているかを確かめる意味でも、これらを一通りこなすことがその試金石になるのでは...と考えています。 以下、やってみてほしいことと、その理由を書いていきます。それぞれ、無料で取り組めるサービスがあるものは、それも紹介していきます。 ブラインドタッチの練習 初っ端からプログラミングと関係ない感じですが、この業界に携わる上での根幹部分になると思ってます。 タイピングスピードは、あらゆるタスクの解決スピードを底上げしてくれます。コーディングはもちろん、ちょっとした調べごと、メールやチャットでの相談など、仕事のあらゆる場面で、僕たちはキーボードを触ることを求められます。 エンジニアに限った話ではないで
はじめに ltreeとは ltree型 ltreeの操作 活用法 1. 承認フローの構築 事前準備 テーブル作成 データ追加 2. テーブルに細かくアクセス制御をかける 事前準備 ltreeの有効化 テーブル作成 ポリシー作成 行セキュリティポリシーの有効化 ポリシーの設定 データを追加 ユーザー作成 試す まとめ はじめに こんにちは! エンジニア2年目のTKDSです! 今回はltreeについて調べ、その活用法を考えてみました。 ltreeについて、ltreeの活用法の2段構成です。 ltreeとは 階層ツリー構造を模した構造を格納する機能を提供する拡張機能です。 詳しくはドキュメントをみてください。 ltree型 階層ツリー構造を表す型です。 例)`Company.Department.Team1 ドット区切りで大文字小文字は区別しないようです。 各データはラベルと呼びます(上記でのC
「静的解析ツールで生まれたSQLインジェクション」というタイトルで登壇したのは、小川 氏。「面白かった脆弱性」について解説し合い、脆弱性に関する知識を深めるためのイベント「Security․Tokyo #2」で、静的解析ツールによって生まれたSQLインジェクションの事例について発表しました。 登壇者の自己紹介 小川氏:小川と申します。「静的解析ツールで生まれたSQLインジェクション」というタイトルで発表いたします。よろしくお願いします。 自己紹介を簡単に。経歴ですが、昔学生の時にWebアプリ開発のバイトをしていて、就職後は10年ぐらいぜんぜん違う、製造業で働いていました。ずっとパソコンを見ていたら目が悪くなるかなと思ってほかの業界に行ったのですが、結局ずっとExcelやWordを見ていて、あまり変わりませんでした。 結局やはりITだなと思って、最近root ipという会社に転職して、Bto
「分析やってます」の大半は処理なんです 本質なきデータ分析がはびこるワケ:これからのAIの話をしよう(データ整備人編)(1/3 ページ) データサイエンティストやデータアナリストなどに比べ、あまり目立たない「データ整備人」という仕事。フリーランスとして20年以上データ分析に携わってきたしんゆうさんは、データの抽出・集計を行うデータ整備の重要性をブログなどで発信しています。 しんゆうさんへのインタビューの前編では、「データ分析においてデータ整備人が重要な理由」「なぜ多くの組織でデータ整備が後回しにされるのか」「日本企業がデータ活用できないワケ」などを聞きました。 後編となる本記事では、日本のデータ分析の実態や、データ分析の本質にも切り込んでいます。 しんゆうさんのプロフィール データアナリストを名乗っているけど、データアーキテクト(データ整備人)+アナリティクスディレクターもやる何でも屋。む
Stop building slow, complex, fragile software systems. Safely run your application on a single server. Fully-replicated database with no pain and little cost. Get started Join our Slack No-worry backups Continuously stream SQLite changes to AWS S3, Azure Blob Storage, Google Cloud Storage, SFTP, or NFS. Quickly recover to the point of failure if your server goes down. Use existing apps Runs as a s
色々古くなったので 1 から書き直した DuckDB メモ v2 モチベーション JSONL を読み込んで解析するツールが欲しかった ログを読み込ませたいので圧縮機能は必須 自社のパッケージ製品が出力する JSONL を読み込んで解析できる仕組み 顧客が問題解析を気軽にできるようにしたい 顧客向けツールとして提供したい つまり顧客環境で動かしたい 1 バイナリ OSS として提供したい Apache-2.0 として公開したい ログファイルは大きくても 100 GB は行かない もともと Go + SQLite + JSONB で検討していた SQL で書きたい SQLite ファイルとして書き出したい SQLite ファイルフォーマットは信頼できる S3 などにファイルを置いておくだけにしたい クラウド版に組み込みたい 顧客毎に duckdb ファイル作ればいいのでは? duckdb ファ
slow logの時間は何を計測しているのか? きっかけ とあるMySQLインスタンスで1Gbのネットワーク帯域を使い切ってレスポンスタイムが悪化していたという話を聞いた。 確かに遅いがlong_query_timeを小さくしてもslow_logは特に出ていなかったため、どのクエリが問題なのかを特定しづらかったらしい。 これを聞いたときはRedisとかインメモリのDBならまだしもMySQLがストレージより先に1GbのNICを使い切ることがあるのかーと驚いた。まあ、100GB以上のメモリも珍しくないので、ほとんどメモリから結果を返していれば1Gb/s以上返すことは難しくなさそうではある。 だが、long_query_timeを小さくしてもslow_logにクエリが出力されなかったという部分は気になった。 具体的にlong_query_timeがどれくらいなのか、同時接続数はどれくらいでQPS
事業会社においてBIやレポート用の分析を担当しているが以下のような状況に該当する人に向けたデータパイプライン構築の入門のための資料です 🧑🏻🦱「BigQuery等のView機能を活用しているが、データの流れを追うのが困難な状態になってしまっている、クエリの実行に時間がかかりBIツールが使いづらい」 👩🏻「専任のデータエンジニアがおらず、前処理をpython等で処理したりするのがリソース調整的に大変」 👱🏻♂️「ロードされたデータに重複があったり、過不足があったりしてデータの品質が担保できていない」 🧑🏻🦰「Digdagやluigiといったデータ変換ツールの独自の仕様を理解しきれておらず使いこなせていない」 ※現時点ではBigQueryを中心に記事を構成してあります、SnowflakeやAmazon Redshift等の様々な分析基盤でもdbtは対応可能です
Infrastructure as data in PostgreSQLInspect and provision cloud infrastructure via a PostgreSQL database Get started How IaSQL worksIaSQL is an open-source developer tool that maintains a 2-way connection between your AWS account and a PostgreSQL database. The rows in the database tables represent the infrastructure in your cloud account.
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く