Thursday, March 26, 2015

論理削除はなぜ「筋が悪い」か

論理削除が云々について - mike-neckのブログ」を読んで。

データベース設計において、「テーブルの書き換えをするな、immutableなマスタと更新ログによって全てを構成しろ」というこの記事の主張はモデリング論として全く正しい

だが、残念なことに、ディスクやメモリが貴重な資源だった時代の技術であるRDBは、そのようなモデリングに基づいて設計されたデータベースには必ずしも適していない

第一の問題は、RDBに対してなされる様々な「更新」(トランザクション)は不定形(どのテーブルをどのように修正するかはアプリケーション依存)だという点。不定形な「更新」を時系列にそってRDBに記録していくのは、設計と並走性の点において困難あるいは煩雑なコーディングが必要になる(というか、そのような「イベント」による「変化」はREDOログに書き、その更新された「状態」をテーブルに反映していくというのがRDBの「一般的な使われ方」)。

第二の問題は、ほとんどのデータベースアクセスは、更新が蓄積された結果である「現在の状態」を問い合わせるものになるが、immutableなマスタと更新ログによって構成されるデータベース設計においては、そのような問い合わせに効率的に応答するのが難しいという点である。

従って、現実的なデータベース設計においては、多くのテーブルが「現在の状態」をもつ、immutableなマスタと更新ログから合成可能な「現在の状態を表現するビュー」を実体化したものとして表現されることになる。

ふりかえって、論理削除とはなにか。「現在の状態を表現する実体化ビュー」に、過去の状態(かつて存在したデータであることを意味する「削除済」)をフラグとして付与したものである。

「現在の状態を表現する」ことを前提にしたビューであるところのテーブルに、過去の状態の一部だけを表現するフラグを追加するのが「筋が悪い」設計だというのは明らかだ。

過去の状態を参照すべき要件があるなら、そのテーブルが表現する情報についてはimmutableなマスタと更新ログを用意し、その射影として表現されるビューとして「現在の状態」を実現すべきである。そのようなビューは自動生成できるならしても良いし、手動で更新するなら、ストアドを使うか、あるいはアプリケーションのデータベースアクセス層において手続きをまとめる方法を考えるべきだろう。

ただ、immutableなマスタ、更新ログと「現時点のビュー」の3テーブルを準備・運用するというのはそれなりにコストがかかるので、筋が悪い「削除フラグ」(より一般化すれば状態フラグ)を使うかどうかはケースバイケースで判断するのもひとつの見識である。


まとめ:
  • データベース設計にあたっては、テーブルを「現在の状態」を表現するものとして設計するか、それとも「immutableなマスタと更新ログ、および現時点の状態を表現するビュー」として設計するかという、2つの選択肢がある
  • 前者は簡潔で性能が高くなるが、過去の情報を参照できないという問題がある
  • 「削除フラグ」というのは、「現在の状態」を表現するテーブルに過去の状態の一部を表現する機能を場当たり的に足したもの(なので筋が悪い)
  • それよりも、過去の情報を参照する要件がある場合(もしくはそのような要件が発生すると想定される場合)は、テーブル単位で「immutableなマスタと更新ログ」という設計を採用しつつ、現在の情報をビューとして表現することを考えた方がよい

こういった点を理解・検討した上で、「それでも削除フラグの方が楽だろう」という判断を下しているなら良いと思います。


追記: Re: 論理削除はなぜ「筋が悪い」か - Blog by Sadayuki Furuhashiで挙げられていた疑問点について
効率的にSELECTや更新ができるスキーマを作ろうとすると、VIEWやFUNCTIONなど、側に実装するコードが増えてくる。それらのコードは、上記のようにDB側に実装しても良い(するべき)だろうか?それともアプリケーションに実装するべきだろうか?
アプリケーション要件によるでしょう。

が、アプリケーション要件に関わらず正しく動作する方法が何かという問に対しては、RDB側でトリガ(あるいはストアド)として実装するのが安全だというのが答えになるでしょう。また、アプリケーションが操作可能な処理は「immutableなマスタ」と更新ログテーブルへの追記のみとし、両者への操作から「現在の状態を表現するビュー」を生成すべきであって、「現在の状態を表現するビュー」をアプリケーションが操作し、その変更内容をトリガでログに出力するという方式は避けるべきという話になるかと思います。

なぜか。そうしないと分離レベルや主キーの発番処理に起因する込み入った条件が色々…続きはお近くのDBAにご相談ください。
テーブルのスキーマは停止時間なしで変更する手法をいくつか思いつくが(PostgreSQLなら)、上記のレコードを削除する操作などはアプリケーションの変更を伴うので難しい(アプリケーションとDBのスキーマをアトミックに変更できない)
カラムのアクセス権は無停止で変更できませんか? つまり、アプリケーションを拡張した結果として削除フラグの存在が冗長になったのであれば、そのフラグの更新をストアドあるいはトリガで行われるように変更し、書き込み権限をドロップすればいいでしょう。

こんな感じかと思います。

29 comments:

  1. I like this a lot. Thank you for sharing. I'm always looking for upcycles like this. In the end, you don't know it was a shipping pallet to begin with!
    Delhi Daredevils Team Squad Captain Name
    GL Players List
    Mumbai Indians Jersey and Logo Images

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. this is one of the cult game now, a lot of people enjoy playing them . Also you can refer to the game :
    age of war | earn to die 5 | Tank trouble | happy wheels | earn to die 6
    The game controls are shown just under . Movement mechanisms primarily include acceleration and tilting controls.
    tank trouble unblocked | wings io | strike force heroes


    ReplyDelete
  4. Look like you are creating amazing content these Days. Krogerfeedback

    ReplyDelete
  5. من اقدم والاختيار بين افضل الشركات فى القاهرة لديها عمالة مميزة ومحترفة لنقل العفش

    شركات نقل الاثاث بالقاهرة هي القادرة علي القيام بهذه العملية بالشكل الصحيح والذي لا يستغرق منها وقت طويل حيث من المعروف أن عملية نقل الاثاث تتسبب في الكثير من الفوضي ولكن شركة نقل متخصصة وتعرف كيف تتم الأمور في مسارها الصحيح ودون أن يتسببوا في أي فوضي. فتعود الحياة الطبيعية مع شركات نقل الاثاث بالقاهرة للعميل ولكل أفراد أسرته في ظرف ساعات معدودة
    اقرأ ايضا
    تجنب عيوب النقل
    الخبرة الكافية لعملية النقل
    اهم المعلومات عن طرق النقل الصحيحة
    الاختيار بين افضل الشركات

    ReplyDelete
  6. It's a nice idea! I will Ukessays.com follow your advice and do everything you've said! It's a great way out indeed. But it is better to find some online essay help for students

    ReplyDelete
  7. Thank you for updating the information. gmail email login This is what I need to find.

    ReplyDelete
  8. Very nice and interesting article. It`s always great to read about people who make all these useful things for us. Thank you. blockchain

    ReplyDelete
  9. if you are interested to buy a kilt. so you can read my post.it is a good and informative post for yours. You can get a premium quality custom fit Tactical kilt form kilt master. you can like this.

    ReplyDelete
  10. Read the best Foot Massager Reviews of 2019 In the following article, we present the top 8 models available today and reveal their pros and cons.

    ReplyDelete
  11. Thanks for your stop at Indian Packers and Movers in Mumbai. We really know the intentions of the people who are moving their homes or offices in Mumbai.
    Movers and Packers in Mumbai
    Packers and Movers in Khar Road
    Packers and Movers in Vile parle
    Packers and Movers in Andheri

    ReplyDelete
  12. Every product that is manufactured by our company is ergonomically designed by experts to meet the requirements of offices and homes. Factors like durable, comfortable and require less space are always kept in mind. And this is the reason why we are able to earn good recognition in our domain.
    Chair Manufacturers in Mumbai
    Chair Supplier in Mumbai
    Office Chair Supplier in Mumbai
    Visitor Chair Supplier in Mumbai
    Chair Dealers in Mumbai

    ReplyDelete
  13. Therefore, the most crucial thing to look out for when searching for Hyderabad packers and movers is their level of reliability. However, it’s not only difficult to find best packers and movers Hyderabad but also to differentiate the right ones from the wrong guys. The ideal solution to avoid such a situation is to search for packer and movers Hyderabad within your budget and do thorough research about each company you interact with, before hiring them.
    Packers and Movers in Kukatpally
    Packers and Movers in Miyapur
    Packers and Movers in Sainikpuri
    Movers and Packers in Hyderabad
    Movers and Packers in Jubilee Hills

    ReplyDelete
  14. Thanks for your stop at Indian Packers and Movers in Mumbai. We really know the intentions of the people who are moving their homes or offices in Mumbai. We are one of the best Packers And Movers in Mumbai that gives values to the suggestions and recommendations of the client.
    Packers and Movers in Mumbai
    Packers and Movers in Dadar
    Packers and Movers in Matunga Road
    Packers and Movers in Mahim
    Packers and Movers in Bandra

    ReplyDelete

  15. Background Removal Services (BRS) is of the all kind Photo editing service providers around the world and cheap rates, the work is submitted according to the delivery time. We offer our global clients: Background Removal, Multiple Path, Clipping Path, Photo Restoration, Photo Neck Joint, Jewelry Photo Retouching, Product retouching, Color Correction, Image Mirror Effect, Deep Etching, Logo Design, banner design services and much more...

    ReplyDelete
  16. This article has something new that the new bloggers need to adapt for the survival of their blogging. For more info do visit:-
    office.com/setup

    ReplyDelete
  17. very good and top level information there which i admire and wanted to connected with you
    Gazebo NZ and i was going to share it on my wall.

    ReplyDelete
  18. Image masking is a powerful background changer while clipping method does not work.Image Masking This process is used to change or remove the background of an image of a target object which has hairy, fuzzy or soft edge like a dog or curly hair of a girl or transparent background like glass.


    ReplyDelete
  19. Thank you very much for these great cake recipes, I have learned a lot from your web blog slither io

    ReplyDelete
  20. thanks for the share. lots of useful information in this. fandangonow.com/activate

    ReplyDelete
  21. Awesome post i really enjoyed reading this article which explained everything in very easy manner. Freddie Mercury clothing i will visit this blog once again to get such an important information which i keep on regularly looking for your blog.

    ReplyDelete
  22. Shadow Creation is the process to change the color of an image or video..Shadow Creation It means correcting the lighting, white color balance, red or blue color balance, so that the image looks more clear or natural

    ReplyDelete

Note: Only a member of this blog may post a comment.