並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 77件

新着順 人気順

created_at 日付だけの検索結果1 - 40 件 / 77件

  • データベース設計の際に気をつけていること - 食べチョク開発者ブログ

    皆さんこんにちは、エンジニアの西尾です。 新しい機能・サービスを開発する際、私は特にデータベース設計に気をつかいます。 データベースはシステムの土台です。 土台が不安定だと、その上に積み上げていくアプリケーションコードがいびつなものになり、つらい思いをします。 また、一度動き出してしまったシステムのデータベース設計を変えるのは、容易なことではありません。 データベース設計には”これだ!”という正解はないと思っています。 サービスの特徴、システムの性質、toB向け/toC向け、Readが多い・少ない、Writeが多い・少ない。 その他もろもろの背景により、データベース設計の仕方も変わってきます。 このテーブルは正規化していないから駄目だ、この設計はいわゆるポリモーフィック関連だから使ってはいけない、などということはありません。 アンチパターンと呼ばれるものも時と場合によっては正解になります。

      データベース設計の際に気をつけていること - 食べチョク開発者ブログ
    • ゼロから始める、データ分析と可視化 - Kyash Product Blog

      はじめまして。Kyashでデータエンジニアリングを担当しているKyashデータマンです。この記事では、Kyash社内のデータ分析の基礎に関するドキュメントを紹介します。 Kyashでは、データエンジニアリング・ガバナンス・セキュリティなど様々な角度から、公正なデータの取扱いと活用を推進しています。従来は、一部の訓練された技術者がデータ分析を一手に担っていましたが、社内でもデータ活用のニーズも多く、その担当者に分析や集計の業務が集中するという課題がありました。 この課題に対して、データへの適切なアクセス管理を行い、そして適切なBIツールを導入することで、データを取り扱う人が自分でデータ分析・そして活用できるようになることを目指しています。アクセス管理には、個人情報やそれに準ずる機密データに対して、ポリシータグによるアクセス権のコントロール、そしてアクセス権のリネージなどのソリューションの導入

        ゼロから始める、データ分析と可視化 - Kyash Product Blog
      • あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog

        あけましておめでとうございます! 今年は異世界放浪メシのアニメが放送されるらしいので楽しみなバックエンドの原田 (tomtwinkle)です。 内部で運用しているSQLレビューチェックリストの一部を抽出し思いつきで追記して行った結果、結構な分量になってしまいました。 暇な時でも流し読みして頂けるとありがたいです。 Motivation SQLレビュー観点 大きくSQLが変更される修正の際にはEXPLAINをレビュー内容に加える 検索のキーにINDEXを使用しているか SQL発行回数がN+1(1+N)の構造になっていないか サブクエリを利用したSQLはパフォーマンス要チェック Viewの利用は基本的に禁止 CROSS JOINは禁止 WHERE句で十分に絞った検索をしているか 必要なcolumnだけSELECTしているか レコード数だけ必要な場合にCOUNT用のSQLを発行しているか 集計関

          あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog
        • 実践Immutable Data Model - 紙箱

          ランキング参加中プログラミング はじめに この記事では、Immutable Data Modelと呼ばれる設計手法をもとに、リレーショナル・データベースにおける、テーブル設計の話を書いています。また、今回の実践で利用する、別の考え方の背景を理解するために、Out of the tar pitという小論文の内容にも言及します。 「状態とは何か?」というややこしい話がたくさん出てきますし、データベースのテーブル設計についての話であることから、たくさんのSQLが出てきます。なので、データモデリングとか状態管理とか、特にSQLとかに興味がない人には面白くないと思います。 そのあたりに興味ある方は、読んでみて欲しいです。 Immutable Data Modelを、実際のアプリケーションで使うデータベースに採用するにあたり、どういう考え方で、どのようにテーブルを構成したか、自分なりの経験を書いていま

            実践Immutable Data Model - 紙箱
          • Kaggleで戦いたい人のためのpandas実戦入門 - ML_BearのKaggleな日常

            はじめに 自分は元々pandasが苦手でKaggleコンペ参加時は基本的にBigQuery上のSQLで特徴量を作り、最低限のpandas操作でデータ処理をしていました。 しかし、あるコードコンペティションに参加することになり、pythonで軽快にデータ処理をこなす必要が出てきたので勉強しました。 そこで、当時の勉強メモをもとに「これだけ知っていればKaggleでそこそこ戦えるかな」と思っているpandasの主要機能をまとめました。 注記 実戦入門 のつもりが ほぼ辞書 になってしまいました orz pandasとはなんぞや的な内容は書いていません (import pandasやDataFrameとは何かなど) pandas1.0系でも動くように書いたつもりですが間違ってたらすみません 目次 はじめに 注記 目次 Options DaraFrame 読み書き CSVファイル 読み込み 書き出

              Kaggleで戦いたい人のためのpandas実戦入門 - ML_BearのKaggleな日常
            • Rails 7とReactによるCRUDアプリ作成チュートリアル(翻訳)|TechRacho by BPS株式会社

              概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: How to Create a CRUD App with Rails and React · James Hibbard 原文公開日: 2022/04/01 原著者: James Hibbard 日本語タイトルは内容に即したものにしました。 React logo is licensed under Creative Commons — Attribution 4.0 International — CC BY 4.0. ほとんどのWebアプリケーションでは、何らかの形式でデータを永続化する必要があります。これは、サーバーサイド言語で作業する場合はシンプルにやれるのが普通です。しかし、そこにフロントエンドのJavaScriptフレームワークも加わってくると、少しややこしくなり始めます。 本チュートリアルでは、Ruby on Rai

                Rails 7とReactによるCRUDアプリ作成チュートリアル(翻訳)|TechRacho by BPS株式会社
              • Twitterのフリート機能に対する権限昇格

                はじめにTwitterはBug Bountyプログラム(脆弱性報奨金制度とも呼ばれる)を実施しており、脆弱性の診断行為を行うことが認められています。 本記事は、そのプログラムを通して報告された脆弱性についてを解説したものであり、Twitterが認知していない未修正の脆弱性を公開する事を意図したものではありません。 また、Twitter上で脆弱性を発見した場合はTwitterのBug Bountyプログラムより報告してください。 (This article is written in Japanese. If you’d like to read this article in English, please visit HackerOne report.) TL;DRTwitterが公開したフリート機能が使用しているAPIに脆弱性が存在し、READ権限しか持っていないサードパーティアプリケ

                  Twitterのフリート機能に対する権限昇格
                • EmbulkでPostgreSQLをMySQLに移行した話 - LIVESENSE ENGINEER BLOG

                  こんにちは。マッハバイトを運営するアルバイト事業部エンジニアの mnmandahalf です。 先日、マッハバイトの販売管理システムで使っているデータベースをオンプレPostgreSQLからAmazon Aurora MySQLに移行しました。 本記事では移行に至った背景、吸収する必要があった差分や苦労した点についてお話しします。 環境 移行前のバージョン: PostgreSQL 9.4 ※ドキュメントはバージョン14のものを添付しています 移行後のバージョン: Aurora MySQL 3.02.0 (compatible with MySQL 8.0.23) 環境 MySQL移行の背景 データ移行方法の検討 Embulkの実行で考慮したポイント Embulkの設定 scram-sha-256認証への対応 タイムスタンプが9時間巻き戻る FK制約を無効化できない PostgreSQLとM

                    EmbulkでPostgreSQLをMySQLに移行した話 - LIVESENSE ENGINEER BLOG
                  • GoとDynamoDBを用いた開発で反省していること | フューチャー技術ブログ

                    はじめにTIG真野です。失敗談をテーマにした連載で、ちょうどプロダクト開発的に良い区切りのタイミングでもあるため、振り返りがてら、DynamoDB,Go,AWS Lambdaの技術要素について自分自身の理解・見込みの甘さについて反省します。 DynamoDBのシステム項目created_atとかupdated_atのタイムゾーンはJSTにすれば良かったDynamoDBは日付型を直接サポートしておらず、文字列型で保存することになります。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes.String データサイズや諸々の理由でUnixTime 勢力もあるかもしれませんが、アプリケーションから直接参照

                    • [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害

                      原因調査 エラーの発生箇所の特定 このエラーIncorrect datetime valueはデータベースのdatetime columnに対して不正な値を書き込もうとしたことが原因で発生しています。通常のINSERT statementを使って、過去の時刻を書き込むことはほとんどありませんが、MySQLなどに用意されているINSERT … ON DUPLICATE KEY UPDATE statementを使って複数の行を更新するときには、過去の時間を使ったクエリが生成されます。 例えば、複数の消耗品を所持しており、1つのクエリで複数の所持数を変更するときは、下記のようになります。 // PK(user_id, item_id) SELECT * FROM items WHERE user_id = 123; user_id | item_id | quantity | created_

                        [Ruby]うるう日の午前0時から9時までに起動したプロセスでのみ再現するサーバー障害
                      • 年末だしRedashのクエリ棚卸しでもしましょう (調査用サンプルクエリ付き) - エムスリーテックブログ

                        これはエムスリー Advent Calendar 2023の9日目の記事です。 前日の記事はSREチーム後藤の「共有会をより効果的にするために考えたあれやこれ」でした。 エムスリーエンジニアリンググループ データ基盤チームの木田です。 師走です。12月といえば年末に向けて大掃除の季節です。 古来日本では12月に宮中で「煤払い」という行事を行う風習があったことが、今日年末の時期に大掃除をする由来とされているそうです。 私の自宅はまだ何も手をつけられていませんが、せめてBIツールの中だけでもということでRedashのクエリ棚卸しをした話*1をご紹介します。 エムスリーにおけるRedashの活用状況 長年の運用の結果起きた性能問題 問題の特定と発生原因 Workerの増設 クエリの棚卸しと改善 使われていない定期実行クエリの停止 サンプル1 直近参照なしかつ定期実行クエリ クエリの実行時間改善

                          年末だしRedashのクエリ棚卸しでもしましょう (調査用サンプルクエリ付き) - エムスリーテックブログ
                        • ここさえ抑えればGitHub API v4がわかる! GraphQL入門

                          この記事について 今年の7/27にGitHub Projectベータと呼ばれていたものがGAになりました。 新しくGAになったProject(以下ProjectV2と書きます)は、 フィールドを用いて、アイテムに様々なメタデータを追加できる カードに設定した様々なメタデータごとにかんばんを作ることができる アイテムのグループ化・ソート・フィルタが簡単にできる 日付・各種メタデータを軸として指定したグラフを作ることができるので可視化が簡単 といった、classic Projectではできなかったあれこれが一つのProjectでできるようになっており、とても便利になりました。 そしてProjectV2がGAした今、一部例外を除いてclassic Projectを新規作成するというのはできなくなっています。 そのため、ProjectV2への移行というのは今後どんどん進んでいくと思われます。 Yo

                            ここさえ抑えればGitHub API v4がわかる! GraphQL入門
                          • GitHub ActionsのワークフローをオートスケールするSelf-hosted runnerに移行した話 - Mobile Factory Tech Blog

                            こんにちはエンジニアのEadaedaです。 皆さんのチームではGitHub Actionsを使っていますか?ブロックチェーンチームではテストやリンター、デプロイといったワークフローをGitHub Actionsで行っています。 今まで、デプロイ以外のワークフローはGitHub-hosted runnerで実行、デプロイはSelf-hosted runnerで実行していましたが、運用していくうちに特定の環境内にあるサーバーで実行されるように仕組みを見直す必要がでてきました。このため全てのワークフローをSelf-hosted runnerに移行する対応を行いました。この記事では移行の際に見つけた便利なものや困ったことを紹介します。 Self-hosted runner GitHub Actionsでは、基本的にGitHubが用意したVMでワークフローが実行されます。このVMをGitHub-ho

                              GitHub ActionsのワークフローをオートスケールするSelf-hosted runnerに移行した話 - Mobile Factory Tech Blog
                            • 非エンジニアがGoogle Analytics 4とBigQueryを使って3時間でSQLをマスターする(クエリサンプル、練習問題付き) ※2022年1月22日再編集|石渡貴大@マインディア

                              優秀なインターン生にSQL ZOOだけぶん投げたらほんとに1日でSQL書けるようになった。多少手直しは必要だけど。ほんとにこの記事の通り。https://t.co/yh872H6KrY — Takahiro Ishiwata / 石渡貴大 (@takahirostone) March 3, 2020 このツイートは非常に反響が大きく、非エンジニアのSQL学習欲を改めて感じました。 私はもともとマーケターでSQLは書けなかったのですが、前職のGunosyでは全社員が誰でもSQLを書いて分析できる環境が整っていましたし、データ分析部の方が優しく教えてくれたおかげでSQLが書けるようになりました。 ただ、そういう環境が自社に整っていないとなかなかSQLを覚えることは難しいのではないでしょうか。かと言って自分で環境構築をするにはサーバーやデータベースの知識が必要になるのでかなり手間と時間がかかって

                                非エンジニアがGoogle Analytics 4とBigQueryを使って3時間でSQLをマスターする(クエリサンプル、練習問題付き) ※2022年1月22日再編集|石渡貴大@マインディア
                              • BigQuery クエリ - pokutuna

                                BigQuery 関連: Colaboratory 標準 SQL 語彙の構造  |  BigQuery  |  Google Cloud リテラル等の仕様 その場でデータを作ってクエリする 動作確認に便利 code:struct.sql SELECT MIN(status) FROM UNNEST([ STRUCT('unexamined' AS status), STRUCT('unexamined' AS status), STRUCT('ng' AS status) ]) 型ほしい時は型を書く code:complex_struct.sql SELECT * FROM UNNEST( ARRAY<STRUCT<count INT64, time TIMESTAMP>>[ STRUCT(3, TIMESTAMP "2020-07-01 10:00:00"), STRUCT(5, TIM

                                  BigQuery クエリ - pokutuna
                                • Redash SaaSサービスから自前ホストへの移行した話 - Mirrativ Tech Blog

                                  概要 ミラティブではデータ分析用ツールとしてRedashのSaaS(redash.io)を使用している。(Lookerと併用) 2021年11月末で redash.io のサービスが終了する。そのため、自前のGCP環境にRedashを移行した。 Redash謹製の移行ツールが提供されているが、いくつかハマったポイントがあった。 本記事では、GCP環境への移行手順・移行時のハマリポイント・移行後にあると便利なものを紹介する。 はじめに 初めまして、ミラティブでデータ分析基盤を担当している芝尾です。データ分析チームは5名のチームになっており、日々ユーザーの皆様のデータを分析してサービスの向上に努めています。今回はミラティブで使用していたデータ分析可視化ツールの移行を行いましたのでそのやり方を共有します。 背景 Redash hosted サービスが終了します。この記事 によると 2021/11

                                    Redash SaaSサービスから自前ホストへの移行した話 - Mirrativ Tech Blog
                                  • 【新発見】「最近はいいねの獲得が難しくなっている」は本当か? 〜 Qiitaのいいねを可視化して分かった7つの驚愕 〜 - Qiita

                                    【新発見】「最近はいいねの獲得が難しくなっている」は本当か? 〜 Qiitaのいいねを可視化して分かった7つの驚愕 〜 「Qiitaでいいねしたら草生えるページ」を作った副産物として全いいねの日時データを取得できました。 いいねした日時を使った分析をすると今までわからなかった驚愕の事実が見えてきました。 今までのQiita分析記事とこの記事では何が違うのか? 今までにもQiitaのいいねを分析した記事はいくつもありましたが、これらの中では記事データを使った分析を行なっていました。 データの取得元はAPIでいうと /api/v2/items になります。 このデータでは記事の投稿日時はわかってもいいねした日時まではわかりませんでした。 これに対してこの記事で使用するデータは、各記事についたいいねを /api/v2/items/:item_id/likes から取得しています。 このデータでは

                                      【新発見】「最近はいいねの獲得が難しくなっている」は本当か? 〜 Qiitaのいいねを可視化して分かった7つの驚愕 〜 - Qiita
                                    • 一週間で構築できる! お手軽データウェアハウス

                                      Legalscape (リーガルスケープ) アドベントカレンダー 2021 の 12/16 (木) のエントリです。 本日のエントリは、突貫工事的に一週間程度1で構築したデータウェアハウスについてお送りいたします。 データウェアハウス構築前夜 2021 年 6 月に予定をしている Legalscape 正式版リリースが刻々と迫り、みなが慌ただしく仕事をしている 5 月下旬、ビジネス上の様々な理由からユーザのアクティビティログを保持して分析・集計するデータ基盤、すなわちデータウェアハウスが必要になりました。 Legalscape ではそれまで、プロダクト上でのユーザの行動に伴って発生するアクティビティログはすべて (書籍の全文検索に用いているものと同じ) Elasticsearch クラスタにインデックスしていました。アクティビティログを利用する際は、このインデックスに対して Kibana

                                        一週間で構築できる! お手軽データウェアハウス
                                      • Datomic Cloud を半年運用した感想|hden

                                        こんにちは、株式会社トレタで Clojure を書いている鄧(でん)です。 2021 年 7 月より新規事業をして飲食店向けのセルフオーダーシステムを開発しており、そのバックエンドに Datomic Cloud と Clojure を採用しました。 採用理由は幾つかありますが、主に履歴、監査ログ、変更通知周りの機能要件がマッチしていると考えており、現状 Datomic と親和性が最も高い Clojure も共に採用しました。 良かったところ、気に入ったところ直感的なデータモデリングができる データモデリングをする際には意外とデータベース自体の制限や思想に影響されることがあると思います。例えば MySQL や PostgreSQL などのリレーショナルデータベース(RDB)に慣れている人であればリレーショナルな情報を表現するときに 1:1、1:n、n:1、n:n の関係性をテーブル構造として

                                          Datomic Cloud を半年運用した感想|hden
                                        • RedshiftのMERGE SQL commandがGAになりましたね。 - KAYAC engineers' blog

                                          SREチームの池田です。 今回はAmazon RedshiftのMERGE SQL commandがGAになりましたので、MERGE SQL commandの何が嬉しいのかを話をしたいと思います。 SRE連載 4月号になります。 aws.amazon.com 3行でまとめ RedshiftのMERGE SQL commandがGAになりました。 Bulk UpsertをSQL1文で実行できるものです。 以前と比べるとスッキリします。 複数のデータソースから算出されるレポートの更新に使うと嬉しい。 以前のRedshiftにおけるBulk Upsertについて ご存知かもしれませんが、『なかったらInsert、あったらUpdate』を通称Upsertといいます。 Redshiftにおける、Upsertのやり方ですがMERGE SQL commandが出る前のRedshiftでは以下のドキュメン

                                            RedshiftのMERGE SQL commandがGAになりましたね。 - KAYAC engineers' blog
                                          • ITエンジニアなのにまだ投資やってないの?ChatGPTでクオンツシステム作って儲けようぜpart2 - Qiita

                                            前回まで ITエンジニアなのにまだ投資やってないの?ITエンジニアならChatGPTでクオンツシステム作って儲けようぜ(https://qiita.com/kazukichi/items/fa6433c3d0115c2b627b) システムなんかで勝てるの?w 日本の投資家には批判的な意見もまだまだある(詐欺的なものも多いですから)みたいですが、エンジニアの皆さんなら分かるでしょう。 出来る ですよね。 そもそも、勝ってる投資家はいくつかの情報を判断して買いや売りのタイミングを測っていて、それは全て定量化した情報を元に判断してるわけですから。 システムで勝てない!って言ってる人は結局その戦略が悪いだけでシステムが悪い分けじゃないわけです。 因みにITを駆使して、ブランド苺を生産している ミガキイチゴ というのがあるんですが、熟練職人の「感覚」で判断しているものを職人の視線を全てトラッキング

                                              ITエンジニアなのにまだ投資やってないの?ChatGPTでクオンツシステム作って儲けようぜpart2 - Qiita
                                            • started_at ってカラム - 線路は続くよどこまでも。

                                              問題 最近、あるテーブルに started_at って名前のカラムをつけてしまったんだけど、あまりよくないっぽい。(あまり深く考えずに、created_at とか同様に過去分詞_atでいいだろと思って命名した。) 解説 start や end は自動詞にも他動詞にもなれるんだけども、例えば Campaigns というテーブルに対して、start した datetime を格納するためのカラムを追加するときは、Campaign が主語になり、「キャンペーンが始まる」という意味の自動詞にするのが自然とのこと。こうすると、自然言語では「The Campaign starts at 9 PM today.」とかなるので、starts_at と命名するのが自然っぽい。 現場 インターネット で検索してみたら、あるあるなのかなぁ 〜 日付のカラム名、started_at にするか start_at に

                                                started_at ってカラム - 線路は続くよどこまでも。
                                              • 【初心者向け】データベースのテーブル設計で僕が意識している6つのこと - Qiita

                                                はじめまして、himakuroです。 2017年ぐらいからQiitaに記事を投下しようと考えていたのですが、なかなか筆が乗らずようやく初投稿です 軽く自己紹介をしておくと、普段は社内SEとしてPHP、Ruby、Golangを書いたり、 趣味の個人ブログ方ではプログラミング初心者に向けた記事や雑記的なものを書いたりしています。 今回は記念すべき1つ目の記事と言う事で 僕が普段テーブル設計(主に命名)で気をつけている6つの事を書きました。 僕の好みも含まれていますが、初心者の方がテーブルやカラム名を決める際の参考になればなと思います。 テーブル名は必ず複数形にする テーブルは一つしかないから単数形を使うべき! Modelも単数形で定義するじゃん! みたいな反論が聞こえてきそうですが、僕は複数形で定義する派です。 また複数形にする場合に、テーブル名の途中の部分を複数形にしている物をたまに見かけま

                                                  【初心者向け】データベースのテーブル設計で僕が意識している6つのこと - Qiita
                                                • GORM v2 触ってみた Major Features 編 - Techtouch Developers Blog

                                                  この記事はテックタッチアドベントカレンダー3日目の記事です。2日目は国定による「TypeScript 4.1 に更新しました」でした。 SREチームの taisa です。「愛の不時着」をきっかけに韓国ドラマにハマっています。最近は「スタートアップ」と「梨泰院クラス」をみています。Netflix な毎日です。 今回は「GORM v2 Major Features 編」ということで、今年8月にリリースされた GORM v2 の新機能をリリースノートに従って簡単に動かしてみたので紹介します。テックタッチのバックエンドは Go で実装していて ORM には GORM v1 を利用しています。v2 の Major Features と Breaking Changes をチェックして v2 へのアップデートも検討したいところです。 公式ドキュメント GORM v2 リリースノート v1 のファイル構

                                                    GORM v2 触ってみた Major Features 編 - Techtouch Developers Blog
                                                  • Headless CMS の Strapi を試してみた #strapi | DevelopersIO

                                                    参考 Installing from CLI インストール それでは、Strapiアプリケーションをローカル環境で実行してみたいと思います。 --quickstartオプションを指定すると SQLite データベースを利用した構成のアプリケーションがインストールされます。 yarn create strapi-app example-app --quickstart or npx create-strapi-app example-app --quickstart ご紹介したコマンド実行しアプリケーションをインストールします。正常にインストールが実行されると以下のログが表示されます。 success Installed "create-strapi-app@3.0.5" with binaries: - create-strapi-app Creating a new Strapi app

                                                      Headless CMS の Strapi を試してみた #strapi | DevelopersIO
                                                    • DynamoDB Immersion Days 参加レポート - ZOZO TECH BLOG

                                                      はじめに こんにちは。ブランドソリューション開発部プロダクト開発チームの木目沢とECプラットフォーム部カート決済チームの半澤です。 弊社では、ZOZOTOWNリプレイスプロジェクトや新サービスで、Amazon DynamoDBを活用することが増えてきました。そこで、AWS様から弊社向けに集中トレーニングという形でDynamoDB Immersion Daysというイベントを開催していただきました。 今回は、2021年7月6日、13日、14日の3日間に渡って開催された当イベントの様子をお伝えします。 7月6日のDay1及び、14日のDay3の様子をDay1のサブスピーカーとして参加した木目沢がお届けします。13日のDay2を同じくDay2にてサブスピーカーとして参加しました半澤がお届けします。 目次 はじめに 目次 Day1(2021年7月6日) Amazon DynamoDB Archit

                                                        DynamoDB Immersion Days 参加レポート - ZOZO TECH BLOG
                                                      • 新人研修でマスターするDBのパフォーマンスチューニング - GMOインターネットグループ グループ研究開発本部

                                                        D. M. です。今回は新人研修で扱う DB のパフォーマンスチューニングについてのお話です。 この記事を書こうと思ったキッカケ 私はここ数年新人やインターンの学生のメンターをよく担当しているのですが、学生と会社員エンジニアの間にはデータベース( RDB )の知見に大きな溝があると感じています。 研修で「とりあえずサービスを作ってみよう!」という課題を出すと、最近の新卒の方は平均的なレベルが高く、いいアイディアでさらっと Web サイトを立ち上げることができます。 ただそのサイトが毎日 100 万人が使うことを想定して充分なチューニングができる人は新人段階ではほんのわずかです。毎回同じようなことを指摘するのですが、特に多いのが DB 関連です。多くの方が DB の経験がほとんどなくあまり扱えないのです。コンピュータサイエンス専攻出身の方はプログラミングスキルをはじめとした技術的な知見を持っ

                                                          新人研修でマスターするDBのパフォーマンスチューニング - GMOインターネットグループ グループ研究開発本部
                                                        • 大規模サービスにおけるMongoDBのインデックス運用 - スタディサプリ Product Team Blog

                                                          QuipperではメインのデータベースとしてMongoDBを活用しており、データサイズは1TBを超えています。 これまでユーザーやデータが増えるたびにスケールアップを繰り返してきたので、AWSの最高性能のサーバを使う状況になっていました。 このような大規模なサービスにおけるMongoDBの運用について書いていきたいと思います。 今回はインデックス編です。 はじめに 当記事で登場するMongoDBの構成 クラスター管理: MongoDB Cloud Manager & AWS EC2 ReplicaSet Cluster: Primary, Secondary, Hidden Secondary EC2 instance type; i3en.24xlarge (Primary/Secondary) RAM: 768GB (Primary/Secondary) MongoDB Version

                                                            大規模サービスにおけるMongoDBのインデックス運用 - スタディサプリ Product Team Blog
                                                          • 週刊Railsウォッチ(20190909-1/2前編)Rails 6のキャッシュバージョニング、Rubyのキーワード引数周りが変わる、Faker 2がリリースほか|TechRacho by BPS株式会社

                                                            2019.09.09 週刊Railsウォッチ(20190909-1/2前編)Rails 6のキャッシュバージョニング、Rubyのキーワード引数周りが変わる、Faker 2がリリースほか こんにちは、hachi8833です。消費税アップが迫ってきましたね。 PDF: 消費税の円滑かつ適正な転嫁のために -- www.jftc.go.jp つっつきボイス:「そうそう、消費税アップ来ますね😅」「皆さんの中で消費税対応されてる方は?」「経理部とやりとりしたりしてますね」「もう終わりました?」「まだまだです🤣」「食品みたいに軽減税率対応のものを扱ってると面倒そうですね」「どちらにしろ2%アップはやってくるので、商品マスターデータを更新するかどうかとか考えないといけないかも☺️」 同PDFより 「今回の場合、消費税を『還元する』とか『サービスする』的な触れ込みをしてはいけないという指示とかが上のP

                                                              週刊Railsウォッチ(20190909-1/2前編)Rails 6のキャッシュバージョニング、Rubyのキーワード引数周りが変わる、Faker 2がリリースほか|TechRacho by BPS株式会社
                                                            • Laravel8でシンプルなCMSを作るチュートリアル[2020年版]

                                                              Laravel8でシンプルなCMSを作るチュートリアル[2020年版] Laravel8を使用して、コーポレートサイトでよくありそうなのお知らせを管理するCMSを作るチュートリアルです。 投稿日2020年11月26日 更新日2021年01月26日 以前「Laravel5.4でシンプルなCMSを作るチュートリアル」というのを書いたのですが、バージョンが古くなったりしているので新しいバージョンで書き直した記事になります。 作る機能 投稿一覧&詳細ページ 管理画面へのログイン機能 投稿管理(CRUD)機能 ユーザーと投稿の関連付け(多対一:HasMany) 投稿のタグ分け(多対多:ManyToMany) ユーザーロール(権限)の設定) インストール 最初にLaravelをComposerでインストールします。 バージョン指定しない場合、現在(2020年10月)の最新バージョンである8がインストー

                                                                Laravel8でシンプルなCMSを作るチュートリアル[2020年版]
                                                              • dbt と Dataform を比較して Dataform を利用することにしました | MoT Lab (GO Inc. Engineering Blog)

                                                                タクシーアプリ「GO」、法人向けサービス「GO BUSINESS」、タクシーデリバリーアプリ「GO Dine」の分析基盤を開発運用している伊田です。今回、dbt と Dataform を比較して Dataform を利用することにしましたので、導入経緯および Dataform の初期構築を紹介します。 ※ 本記事の対象読者はELTツールを利用している方を対象にしています これは MoT Engineer Challenge Week 2022 Spring の記事です。 はじめに本記事では、まず、dbt および Dataform というツールについて簡単に説明させて頂き、次に現在データ分析チームが抱えている課題について取り上げます。その後、2つのツールについて検証した内容を紹介し、その結果、Dataform の導入に至った経緯を説明します。また、最後に Dataform の初期構築で工夫し

                                                                  dbt と Dataform を比較して Dataform を利用することにしました | MoT Lab (GO Inc. Engineering Blog)
                                                                • 【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する

                                                                  この記事は GMOアドマーケティング Advent Calendar 2023 4日目の記事です。 はじめに こんにちは。 GMOアドマーケティングの石丸です。 昨年のアドベントカレンダーでは Rails 7 で追加された ComparisonValidator について紹介しました。 GMOアドパートナーズ TECH BLOG byGMORails 7 で追加されたComparisonValidatorで日付のバリデーションを実装するこの記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。前回の記事では Rails 7 から実装された query_log_tags について紹介しました。今回の記事では同じく Rails 7 から追加された ComparisonValida

                                                                    【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する
                                                                  • 国際化を意識したWebアプリケーションにおける日付・時刻の扱い方 - Sansan Tech Blog

                                                                    こんにちは、クラウド請求書受領サービス Bill One の開発をしている加藤です。 新しくアプリケーションを開発する際は、それが日本国内をターゲットにしたものであっても、グローバル対応するときに問題が発生したり、そもそもグローバル対応できなかったりする作りにはしたくないはずです。まずは日本の顧客向けにスタートしたBill Oneを開発する際も、同じことを考えていました。 本稿ではグローバル対応の中でも、日付・時刻にフォーカスします。 次の「タイムゾーン呪いの書 3部作」にあるように、日付・時刻の扱いの難しさはよく知られています。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) この3部作は2021年の改訂ということもあり、Bill Oneの開発を始めたばかりの頃に直接参考にできたわけではありません。 初版やエムスリーさんの記事を

                                                                      国際化を意識したWebアプリケーションにおける日付・時刻の扱い方 - Sansan Tech Blog
                                                                    • DomainWatchのシステムをリニューアルしました | 匿名ブログ

                                                                      ドメインのWHOISやサイトの情報を調べることのできるサービスDomainWatchですが、7月半ばからシステムに問題が発生し、新規にドメインのWHOISを照会する機能を停止していました。 — 具体的に言うと、DomainWatchのデータベースはMySQL(MariaDB)を、全文検索にはMySQL用のストレージエンジンMroongaを採用していたのですが、件数が多すぎたせいでMroongaはキーのサイズが4GBまでという制限に引っかかってしまいました。 MySQLの上限に達してしまった もう再構築するしかない pic.twitter.com/ZufuMpMo1v — Cheena (ちーな) (@cheenanet) 2019年7月17日 (MySQLの上限と書いていますが、Mroongaの制限が正しいですね) そこでMroongaではもうあかんということになり、長らく検討していたEl

                                                                        DomainWatchのシステムをリニューアルしました | 匿名ブログ
                                                                      • Railsプロジェクトで発生するflaky testの傾向と対策|グロービス・デジタル・プラットフォーム

                                                                        はじめにはじめまして。この一年ほど学び放題のDevExpチームでバックエンド開発のお手伝いをしてるmasa_iwasakiです。 今回の記事では、学び放題のバックエンドとして使われているRailsアプリケーションで実際に発生していたflaky testの事例を中心に、一般的なRailsアプリケーションで発生しがちなケースをまとめました。 個人的に、flaky testの発生パターンは割と定番化している印象を持っています。たとえば、以下の記事に記載されている内容と本記事の内容は共通するものが多いです。 Ruby: テストを不安定にする5つの残念な書き方(翻訳)|TechRacho by BPS株式会社 しかし、同じ原因で発生したflaky testであっても、コードベースが異なれば発生の仕方は変わりますし、なにより原因の調査にかかる手間は大きく異なります。本記事がflaky testに遭遇し

                                                                          Railsプロジェクトで発生するflaky testの傾向と対策|グロービス・デジタル・プラットフォーム
                                                                        • 社内データパイプラインツールを Mercari Dataflow Template としてOSS化しました | メルカリエンジニアリング

                                                                          Merpay Advent Calendar 2020 の10日目の記事です。 こんにちは。Merpay Solutions Teamの @orfeon です。 3ヶ月ほど前のブログ記事でメルペイでのFlexTemplateの活用例を紹介しましたが、ここで使われていたソフトウェアを先日、OSSとして公開しました。 この記事ではこのOSSとして公開したMercari Dataflow Templateについて紹介します。 BigQueryから取得したデータを別のDatabaseサービスに保存したり、異なるデータソースからのデータをSQLで結合・加工したり、AWSのS3にデータを出力したりなどなど、GCP上での何らかのデータの処理に関わられている方は役立つケースがあるかもしれないのでぜひご一読頂ければ幸いです。 Mercari Dataflow Templateとは何か Mercari Dat

                                                                            社内データパイプラインツールを Mercari Dataflow Template としてOSS化しました | メルカリエンジニアリング
                                                                          • SQLite3 で created_at, updated_at - Qiita

                                                                            CREATE TABLE test ( test TEXT, created_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')), updated_at TEXT NOT NULL DEFAULT (DATETIME('now', 'localtime')) ); CREATE TRIGGER trigger_test_updated_at AFTER UPDATE ON test BEGIN UPDATE test SET updated_at = DATETIME('now', 'localtime') WHERE rowid == NEW.rowid; END; テーブル名やトリガー名の test の部分を必要に応じて書き換えてください。 2. 説明 2.1. DEFAULT 制約で DATETIME 関数を使える 「DEF

                                                                              SQLite3 で created_at, updated_at - Qiita
                                                                            • 週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか|TechRacho by BPS株式会社

                                                                              2020.03.30 週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか こんにちは、hachi8833です。 つっつき前ボイス:「このところフルリモートで自宅作業していると、つい人と口をきくのを忘れちゃいそうになるので、つっつき会参加します」「そんなに」「ゴミ捨て以外まったく外に出ませんでした」「ほぼパーフェクト」 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください ⚓

                                                                                週刊Railsウォッチ(20200330前編)Active Record Doctorで診断、Webpacker 5、GitHubのViewComponentとRails 6.1の3rd-party component frameworkほか|TechRacho by BPS株式会社
                                                                              • BigQueryチートシート|とくきち(tokukichi)

                                                                                ※2022/9/24 UPDATE データ分析・集計でよく使うクエリを調べる時間を省くためにまとめています。 URLを階層で区切るページごとのPVやCTRを集計するときに、階層ごとに切り出して集計しやすくする時に使ったりします。 クエリ WITH data AS ( SELECT 'https://www.example.com/video/detail?id=100' url ) SELECT url, -- //からパラメータの間をマッチさせ/で分割 split(regexp_extract(url, '//[^/]+([^?#]+)'), '/')[SAFE_ORDINAL(2)] path1, split(regexp_extract(url, '//[^/]+([^?#]+)'), '/')[SAFE_ORDINAL(3)] path2 FROM data■SAFE_ORDINA

                                                                                  BigQueryチートシート|とくきち(tokukichi)
                                                                                • 週刊Railsウォッチ(20200303後編)Ruby 2.7で引数のruby2_keywordsフラグを確認する、fake_apiでAPIプロトタイプ、groupdateで日付をグルーピングほか|TechRacho by BPS株式会社

                                                                                  2020.03.03 週刊Railsウォッチ(20200303後編)Ruby 2.7で引数のruby2_keywordsフラグを確認する、fake_apiでAPIプロトタイプ、groupdateで日付をグルーピングほか こんにちは、hachi8833です。私もしばらくの間リモートワークになりました。 家で保育園と小学校をやりながら仕事をしてるんだけど、これ無理では...... — yancya (@yancya) March 2, 2020 それはそうと確定申告が延長されましたね🎉。 参考: 確定申告4月16日まで延長方針 - Yahoo!ニュース 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」

                                                                                    週刊Railsウォッチ(20200303後編)Ruby 2.7で引数のruby2_keywordsフラグを確認する、fake_apiでAPIプロトタイプ、groupdateで日付をグルーピングほか|TechRacho by BPS株式会社