ActiveRecord, DataMapper czy Agregacja encji

794f638b6f7f5132d5a13230e61c9db2?s=47 Krzysztof Wawer
January 21, 2015
42

ActiveRecord, DataMapper czy Agregacja encji

794f638b6f7f5132d5a13230e61c9db2?s=128

Krzysztof Wawer

January 21, 2015
Tweet

Transcript

  1. ActiveRecord, DataMapper czy Agregacja encji Kiedy warto stosować ? Krzysztof

    Wawer
  2. O mnie Krzysztof Wawer krzysztof.wawer@gmail.com Github: wafcio Twitter: @KrzysztofWawer Neubloc

    Polska
  3. 1. Wzorzecz „ActiveRecord” http://www.martinfowler.com/eaaCatalog/activeRecord.html

  4. 2. Wzorzecz „DataMapper" http://www.martinfowler.com/eaaCatalog/dataMapper.html

  5. Aplikacja

  6. ActiveModel, Presenter, FormObject ActiveModel pozwala na tworzenie dowolnych formularzy =>

    zapis wielu obiektów ActiveRecord nie jest już taki dużym problemem „Presenter" Jay Fields (1) => „FormObject” CodeClimate (2) (1) http:/ /blog.jayfields.com/2007 /03/rails-presenter-pattern.html (2) http:/ /blog.codeclimate.com/blog/2012/10/17 /7-ways-to- decompose-fat-activerecord-models/
  7. FormObject Order OrderState Receiver

  8. FormObject OrderForm Order OrderState

  9. FormObject ActiveModel

  10. FormObject Virtus • rzutowanie atrybutów • walidacji (z ActiveModel)

  11. FormObject + 1..n Order Entry

  12. FormObject Reform • rzutowanie atrybutów (z Virtus) • zagnieżdżone atrybuty

    + walidacja
  13. Współdzielona baza danych

  14. Gdy baza danych jest DUŻA

  15. 3. Wzorzecz „Aggregate Entity” http://www.drdobbs.com/enterprise-javabeans-201the-aggregate-en/184414592

  16. Dodatkowa warstwa obiektów Warstwa danych Warstwa obiektów

  17. Domain-Driven Design Part II, The Building Blocks of a Model-Driven

    Design Chapter 6: The Life Cycle of a Domain Object AGGREGATES
  18. Entity + Repository + Data dostępne gemy Datamappify (nie rozwijany

    od Listopada 2013) • ActiveRecord (4.0.x) • Sequel Edr (nie rozwijany od Maja 2013) • ActiveRecord (3.2.x)
  19. Entity + Repository + Data dostępne gemy Curator • mongo

    • riak • Memory Lotus::Model • Sequel • Memory
  20. Clean Architecture „Clean Architecture” Uncle Bob Martin

  21. Agregacja encji Tylko Datamappify implementuje Entity Aggregation

  22. Order - Datamappify

  23. Problemy

  24. https:/ /github.com/fredwu/datamappify

  25. Repozytorium http:/ /hawkins.io/2013/10/implementing_the_repository_pattern/ Bezpośrednie odwzorowanie encji w strukturze bazy danych

    Brak agregacji i deagregacji danych
  26. Schemat - czy wszystko jest OK ? Główna Encja Repozytorium

    ORM ORM
  27. Po co ORM ? Czy elementy ORM są potrzebne ?

    obsługa formularzy callbacki zagnieżdżone atrybuty … Repozytorium ORM ORM Główna Encja
  28. Po co ORM ? Czy elementy ORM są potrzebne ?

    obsługa formularzy callbacki zagnieżdżone atrybuty … Repozytorium ORM ORM Główna Encja DATA DATA
  29. Warstwa DATA Wykorzystanie warstwy z ORM do mapowania danych ActiveRecord

    -> arel Sequel rom -> axiom rom-sql -> sequel rom-mongo -> moped Mongoid -> moped MongoMapper -> mongo
  30. FormObject czy Encja FormObject Agregacja kilku modeli w jednym formularzu

    Gdy agregacja modeli występuje w jednym lub kilku ściśle określonych miejscach aplikacji Struktura bazy danych jest ważna Encja Agregacja danych z kilku tabel, dokumentów, … Gdy w większości aplikacji zależności modeli są ze sobą mocno powiązane Nie musimy przejmować się strukturą bazy
  31. Pytania ???