こんにちは、新卒エンジニアの川本です。 BUYMAのサーバーサイドを中心に開発しています。 この記事はEnigmo Advent Calendar 2022の12日目の記事です。 データモデリングについて学習中で、DB設計の入門書を読んで論理設計について第1~5正規化といった内容を学習しましたが、いざ個人開発でデータモデリングしようとしたらどうしたらいいのかよくわからず、手を動かすことはできませんでした。 そんな状況の時にイミュータブルデータモデリングというモデリング手法について知ったことをきっかけけに、データモデリングがイメージしやすくなりました。 この記事ではイミュータブルデータモデリングを実践してみて感じたことを紹介できればと思います。 目次 データと情報の違い イミュータブルデータモデリングとは イミュータブルデータモデリングの手順 普段Railsで開発していて感じたこと イミュー
イミュータブルデータモデリング Q. イミュータブルデータモデリングについて教えてください。 A. 以下、ChatGPT の回答です。 イミュータブルデータモデリング(Immutable Data Modeling)は、データモデリングのアプローチの一つで、データを不変(変更不可)な形式で扱う方法です。このアプローチでは、データが一度生成されたら、その値を変更せず、新しいバージョンを作成することが一般的です。イミュータブルデータモデリングは、分散システム、バージョン管理、データの整合性、履歴のトラッキングなどのさまざまな領域で有用です。 以下は、イミュータブルデータモデリングの主要な特徴と利点です。 データの安定性と信頼性: データが不変であるため、一度データが記録されたら、それを変更することができないため、データの信頼性と安定性が向上します。これは、エラーやバグがデータを破損させる可能性
どうもoreoです。 今回はWEB+DB PRESS Vol.130のイミュータブルデータモデル特集を読んだメモを記載します。主に自分用の記事ですが、データモデリングとは?どうやるの?といった方の参考になればと思います。 1 良いデータモデリングとは? 良いデータモデリングとは、モデリングの過程で考慮されていなかった要求の穴やエッジケースの発見につながるもの。データモデリングの本質的価値は、作成時により深く業務要求を分析し、顧客やチームとの対話を生むこと。その為、データモデルはソフトウェアエンジニアだけでなく関係者全員の理解のために、そこに隠れた曖昧さや要求を洗い出し、議論するために使う。 2 イミュータブルデータモデルとは? モデルが複雑になる要因はデータの更新処理(CRUDのU)である。システムで扱う情報はモノ(リソース)とコト(イベント)に分類することができる。このイベントを極限まで
Efficient, immutable, and thread-safe collection classes for Ruby. The immutable-ruby gem provides 6 Persistent Data Structures: Hash, Vector, Set, SortedSet, List, and Deque (which works as an immutable queue or stack). Whenever you "modify" an Immutable collection, the original is preserved and a modified copy is returned. This makes them inherently thread-safe and shareable. At the same time, t
こんにちは。リサーチ・アンド・イノベーションの中村(konk303)と申します。 いわゆる「railsおじさん」的な立場で、主にサーバーサイドの開発をしています。 Introduction 本稿ではQiitaのイミュータブルデータモデルと webアプリケーションにおける現実解にインスパイアされて、弊社でのイミュータブルデータへの取り組み(とその苦しみ)を紹介したいと思います。 qiita.com イミュータブルデータモデルとは? まるっと引用。 イミュータブルデータモデルと webアプリケーションにおける現実解 - Qiita 詳細はリンクに譲りますが、「履歴を全て残すようなデータ設計にし、 UPDATE を廃することで情報の追跡可能性を確保、堅牢な設計にする」モデリング手法です。 原則この手法に従うと、そうそう汚いモデルにはならないという優れもの(雑) です。イベントが起こる度に新規レコ
これは第2のドワンゴ Advent Calendar 2017の5日目です 5日11時時点で2日担当の yonex がまだ記事書いてないですが、気にせず続けます。niconico(く)のリリースが来年と聞いて残念な気持ちです。 おめー誰よ? ドワンゴ Advent Calendar皆勤賞っぽいですが、私はドワンゴ社員ではありません。 定年をとうに過ぎたおじさんです。 前置き web アプリケーションの開発において、データモデリングはとても重要です。 SIerではDBAとか言って専門の設計担当がいるみたいですが、中小webサービス企業でそこまでの分業ができるわけもなく、大体においてwebアプリケーション(サーバサイド)エンジニアが担当することになります。 イミュータブルデータモデル 詳細はリンクに譲りますが、「履歴を全て残すようなデータ設計にし、 UPDATE を廃することで情報の追跡可能性
はじめに CRUDのうちUPDATEがもっともシステムを複雑化する。更新には複雑なルールが伴うからだ。業務的に複雑なルールが存在するのは仕方ないこともあるが、システム、設計で複雑さを更に増さないようにしたい。UPDATEに着目し、その発生をできるだけ削ることによって複雑さをおさえるためには、まずデータモデルをそのように設計しておかなけれなならない。このイミュータブルデータモデルは、それを手助けする手法で、手順に沿って実施すればある程度のスキルのバラつきも吸収できるように組み立てられている。 手順 Step1. エンティティを抽出する まずエンティティを抽出するところから始める。 5W1Hがエンティティの候補 従業員,患者,プレイヤー,顧客,生徒,... 製品,サービス,コース,曲,... 時間,日付,月,年,年度,... 送付先,URL,IPアドレス,... 注文,返品,入金,出金,取引,
以前、DDD(ドメイン駆動開発)を経験した流れでいくつかのことを学びました その中でDDDの神髄を垣間見たのでかいつまんで紹介できればと思います 記事のターゲット DDDを学び始めた人 値オブジェクト・ValueObjectとはなにか、その片鱗を知りたい人 Value Objectとは 値オブジェクトとしてエリック本(青本)では紹介していますね Value Objectの特徴 特徴として以下のような内容があります 一意性を持たない 計測/定量化/説明を責務とする イミュータブルオブジェクト 交換可能 ふるまいに副作用がない 一意性を持たない オブジェクト毎に hogehoge_id のような一意性を表現するプロパティを含まず、一意性がない特徴です 逆にIDを持つようなオブジェクトは「Entity」といいます この特徴の意味するところはオブジェクトをプリミティブライクに扱えることだと考えられ
immutable??mutable?? ということで、immutable(イミュータブル:不変)とmutable(ミュータブル:変更可能)なオブジェクトの話です。 そもそもimmutable/mutableってなんだろう?というところから書きたいと思います。 |> immutable(不変)オブジェクトとは オブジェクト(インスタンス)そのものの状態を変更できないこと。 Javaにおける代表格はStringクラスです。事実Stringは自分自身の状態を変更するメソッドを提供していません。 ※replaceメソッドなんかは勘違いされやすいですが、自分自身が変化することはないと覚えていれば分かりやすいかと。 不変オブジェクトとして、必要な条件は下記の通り。 オブジェクトの内部状態を変更可能なメソッドを提供しない。(つまり、getterは用意してもsetterやそれに準ずるものは用意しない)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く