Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ActiveRecord, DataMapper czy Agregacja encji

Krzysztof Wawer
January 21, 2015
82

ActiveRecord, DataMapper czy Agregacja encji

Krzysztof Wawer

January 21, 2015
Tweet

Transcript

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

    Wawer
  2. O mnie Krzysztof Wawer [email protected] 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 ???