パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

AWSがSQL互換の新言語「PartiQL」を公開、RDB/KVS/JSON/CSV等を検索可能」記事へのコメント

  • by Anonymous Coward

    SQLはクソ言語だし、今さら互換性を維持して色々するのは悪手だとは思う。
    まぁみんな使えるから価値はあるかな。
    が、現代風にクエリ言語を再設計するならどうすればいいだろうか。

    データベース側の処理を考えるとJsonやらXMLやらで命令文が記述できた方が処理しやすいだろうがさすがにそれは人間側が困る。
    各言語側でJavaのStreamやC#のLinq的な何かを実装するとして問い合わせは機械処理しやすい言語ってのもありかもな(現在もだけど名前を微妙に変えたりせずAPIは統一してほしい)。
    あんまり高度で表現性が高いとキャッシュやら高速化やらで困るのは目に見えてるのも難点。

    とりあえずいろんなデータで扱えるクエリ言語ってのは便利かもしれないな。
    良い普及したのがあればJavaScriptで標準で使えるようになりそうで便利な感じ。
    XMLならXPathあたりが…近いようで全然違うな。

    • 伺いたいのですが、SQLってどの辺がクソ言語ですかね?

      いや、基本のSQL構文に各DBが好き勝手に色々やっててごちゃごちゃしてるのはありますが、
      データの取り扱いにおいて、シンプルな実装だと思ってるので。

      まあ、もう少し記号等でシンプルに表記できたりしてもいい気もしますが、自分も大分慣らされちゃったってことなのかな。

      • by Anonymous Coward

        とりあえず語順。fromを先にしてくれれば…。

        あとプログラム方面に振れるけど、一つ前のデータを使って計算したいとか度々あるので簡単に使用できる構文なり関数なり欲しい。
        サブクエリ作って行番号発行すればできるけど面倒。

        • Re: (スコア:4, 参考になる)

          語順は、「普通の英語の構文」っぽいんですよね。
          Select [columns] from [Table]とUpdate [Table] set はたしかに昔よく間違えたかも。
          で、UpdateとInsertの文法も、まあ違う。

          英語だと考えれば、やりたいことが一番前に来るのはナチュラルだと思うんですよね。
          で、やりたいことの対象が目的語として次にくる。

          どうしても語順に馴染めない場合、配列やら構造体やらで事前にデータセット作って、SQL文は手で書かないような工夫をしたり、なんてのもいいかもです。
          (なんかこんな事言うとクソ言語を認めるみたいになってますが)

          「一つ前のデータ」のイメージがはっきり湧きませんが、DBって、データの順序とか気にして(保証されて)格納されてないイメージですけどね。(そういう開発したことないだけかな・・・)

          前後の行と連携させた処理の場合、AWKっぽい発想になっちゃいますね、自分は。

          • by Anonymous Coward

            > 語順は、「普通の英語の構文」っぽいんですよね。

            普通の英語って、
            否定形の疑問に対する解答が「Is't it? → No. 」だろ?
            コンピュータで扱う文法として不適切な言語だよ。

            というか fromが先じゃないせいでクエリエディタの補完ができないのがクソだわ。

            • by Anonymous Coward on 2019年08月07日 10時13分 (#3665443)

              > コンピュータで扱う文法として不適切な言語だよ。
              まったくです。

              「語順や文法が自然言語っぽい」というのは、
              コンピュータで扱う言語としては欠陥でしかない。

              サブルーチンなどが記述しにくく(できない?)、入れ子構造が巨大化し易いなどの問題もあるかも。
              #細かいことをいうなら、「DELETEでWHEREを忘れると……」というのはなんとかしてほしかった。

              ところで、SQLできちんとオートインデントが機能するエディタってありますか?
              それが実現しにくい(或いは不可能)だというのも、問題と言えば問題なアア.

              親コメント
              • by Anonymous Coward

                >ところで、SQLできちんとオートインデントが機能するエディタってありますか?
                >それが実現しにくい(或いは不可能)だというのも、問題と言えば問題なアア.

                クエリ書いて実行してくれるようなツールだと大抵補完してくれますよ。
                DB繫いでる前提ですが。

                補完したかったらselect * from xxxx as aみたいにまず書いてから直してけばselectの後ろも保管してくれます。

              • by Anonymous Coward

                > 補完したかったらselect * from xxxx as aみたいにまず書いてから直してけばselectの後ろも保管してくれます。

                多分、補完について書いてる奴はだいたいわかってると思うよ

                それが構造的欠陥だって話なんだよなぁ
                前から書いて補完が素直に効くほうが合理的じゃん

              • by Anonymous Coward

                > 前から書いて補完が素直に効くほうが合理的

                この主張は正しいけど、欠陥というほどでもないかな。query書くときはどうしてもfrom以降の内容 (whereとかgroup byとかjoinとか) に注意が行ってるから、とりあえず select * from まで書くのをすでに手が覚えてるし。

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

処理中...