タグ

sqlと*programに関するsh19910711のブックマーク (11)

  • 最近、クエリビルダーを使うのがだるい

    クエリビルダーやORMを使うのは基的に良いこと。 特に開発初期とかはレビューの時間も足りず、クソみたいなクエリを書いてしまったりするので、それを防止するためにも、ライブラリでリスクを担保してあげるのは大事なこと。てか大体は慢心によってそういうの使わないって選択すると失敗すると思う。僕は失敗する自信がある。 自分もGoで開発する時、MySQLに対してのクエリを書く場合は、以下のクエリビルダーを使っている。一部ビルダーでJOINが使えなかったり、サブクエリの書き方が特殊だったりするが、それ以外はだいぶライトな実装で満足している。 ただ、最近サービスもすくすく育ち、レビュー体制が堅実になっていく動きの中で、クエリビルダーを使うのがダルくなってきた。 なんでかというと、多分以下の2つの理由でだるい。 サービス規模に応じて諸事情を孕んだ複雑な実装が生まれるが、その複雑さをクエリが吸収してしまい、メ

    最近、クエリビルダーを使うのがだるい
    sh19910711
    sh19910711 2022/08/07
    2018 / "レビュー時の視認性: 規模に応じて諸事情を孕んだ複雑な実装が生まれるが、その複雑さをクエリが吸収してしまい、メソッドがどちゃどちゃチェインしてコードを追ってもあんまクエリが頭に入ってこない"
  • 僕なりのSQLスタイルガイドを定義してみる

    宗教戦争する気は毛頭ありません このスタイルガイドをそのまま使うもよし、たたきとするもよし ご自身の状況、組織に応じて柔軟にお使いください なぜ定義するか コードは書く時間より読む時間の方が長い、SQLも例外ではないと思っています、読みやすく(理解しやすく)するためにスタイルガイドを使いたいと思っています どういうクエリが「読みやすい」かは人によって差異があると思います、それぞれの「読みやすい」をチーム内ですり合わせるためにスタイルガイドを使いたいと思っています スタイルガイドで「ここまでは揃える」を定義すると、「ここからは個人の自由で」という部分を明確にできます、これは余計なレビューコストを下げるのに役立つはずだと思っています スタイルガイドを定義できればlinterに指摘してもらえます、人間に指摘されるより機械に指摘された方が心理的安全性が高いと思っています 指摘する方もストレスなんや

    僕なりのSQLスタイルガイドを定義してみる
    sh19910711
    sh19910711 2022/06/02
    表示するときにスタイルを読み手に応じて変化させて、ロジックに影響しない差分が表示されないようになると良さそう / "コードは書く時間より読む時間の方が長い、SQLも例外ではない"
  • SQL等価性検証ツールCosetteを使ってみた - Qiita

    はじめに 皆さん、SQLチューニングしてますか?(唐突) 私は仕事RDBMSSQLチューニングをすることが多いのですが、たまにチューニングの一環で SQL文の書き換え をすることがあります。 その際に問題になるのが、書き換えたSQL文が等価であるかどうかの確認が大変なことです。 SQL文を書き換えた場合には、想定通りの結果を取得できるか確認するために、テストをやり直す必要があります。 これが開発早期のフェーズならまだましなのですが、結合テスト以降だと手戻りも多くかなりコストがかかりますし、既に番運用が始まったシステムともなると、テスト自体が困難なこともあります。 また、複雑なSQL文だと網羅的なテストケースを作成すること自体が困難であるため、完全に正しいと確信することはできません。 なので、SQL文の書き換えの正しさを証明する良い手段はないかと考えていました。 SQLチューニングとは

    SQL等価性検証ツールCosetteを使ってみた - Qiita
    sh19910711
    sh19910711 2021/12/24
    2018 / "Cosette: SQL文の等価性を自動的に検証してくれるツール / 検証により、等価/非等価/決定不能を判定。非等価の場合、反例も出力 / SELECT文のみ対応 + 現時点では検証できないパターンが多く、実用性は乏しい"
  • SQLとはどんな言語か - SQLは仕様書です - SQLer 生島勘富 のブログ

    SQLとはどんな言語かなぜ多くの人が違和感を持つかというと、多くの人が、「プログラミング言語とは手続き型言語である」(オブジェクト指向言語も広義の手続き型言語)という思い込みがあるからでしょう。 手続き型言語の中には 非構造化言語(FORTRANなど) 構造化言語(C言語など) オブジェクト指向言語(Javaなど) などなどがあり、SQLを除けば、数十年前から現在に至るまで、手続き型言語のシェアは95%を超えるのではないでしょうか。関数型言語などは現場で見ることはほとんどありません。ですから、「プログラミング言語とは手続き型言語である」と思っても仕方がない。 SQLは多くの手続き型言語とは性質を異にするものです。「プログラミング言語とは手続き型言語である」と仮定すれば「SQLは仕様書である」と言えます。 SQLとは、その前進の名前 SEQUEL (Structured English Qu

    SQLとはどんな言語か - SQLは仕様書です - SQLer 生島勘富 のブログ
    sh19910711
    sh19910711 2021/11/20
    こういう経緯だったのか / "SQLとは、その前進の名前 SEQUEL (Structured English Query Language)が示すとおり、英語を目指して作られ / 名前の由来が SEQUEL であるため、英語圏の方は未だにSQLを"シークェル"と発音される方が多く"
  • GitHub - ronsavage/SQL: BNF Grammars for SQL-92, SQL-99 and SQL-2003

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - ronsavage/SQL: BNF Grammars for SQL-92, SQL-99 and SQL-2003
  • GitHub - nleof/goyesql: Go + Yesql

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - nleof/goyesql: Go + Yesql
  • [R]SQLクエリでRのデータを加工・集計できるパッケージ「sqldf」 - データ分析がしたい

    私が分析を行う際、データ加工や集計作業は基的にSQLで行い、分析やモデル作成はRで行うことが多いです。 しかし、DBが使えないような場合やちょっとした集計などRでデータを加工・集計したい場合があります。 RでSQLで行うようなデータ加工・集計を行うには、基的にsubsetやorder、merge、aggregateといった関数を利用します。 (SQLとRの関係については、以下のページがわかりやすいです。 http://d.hatena.ne.jp/a_bicky/20110529/1306667230) ただ、こういった関数はよく使い方を忘れてしまい、Webなりヘルプなりを使うたびに調べるなんてことが起こります。 正直、かなり面倒なわけです。 そこでSQLクエリを使って直接Rのデータを加工できたら良いなーと思うわけですが、 「sqldf」パッケージを用いれば直接SQLを利用してデータを

    [R]SQLクエリでRのデータを加工・集計できるパッケージ「sqldf」 - データ分析がしたい
    sh19910711
    sh19910711 2017/07/22
    sqldf, GSoCの成果物らしい
  • GitHub - xwb1989/sqlparser: SQL Parser implemented in Go

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - xwb1989/sqlparser: SQL Parser implemented in Go
  • GitHub - square/sqlbrite: A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - square/sqlbrite: A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations.
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Sequel について (その1) - tmtms のメモ

    最近 Sequel というライブラリを触ってるので簡単にまとめてみます。 Sequel Sequel は Ruby の構文で SQL クエリを記述するためのライブラリです。 SQL の文法が嫌いな自分には持って来いです。 RDB 毎の差異も吸収してくれます。 自分は MySQL しか知らないので、以下は MySQL での例です。 インストール % gem install sequel % gem install ruby-mysql 接続 DB = Sequel.connect('mysql://user:password@hostname:port/dbname') # または DB = Sequel.mysql('dbname', :host=>'hostname', :user=>'user', :password=>'password', :port=>'port') 上の例では定

    Sequel について (その1) - tmtms のメモ
  • 1