2010-11-13 23 views
5

Które ORM najlepiej używać z nową aplikacją Rails 3 w stosunku do starszej bazy danych MySQL 5.1? Nie spodziewam się, że kiedykolwiek uruchomię migrację do tej bazy danych (chociaż schemat może się zmieniać od czasu do czasu), ale na pewno napiszę do niej.Szyny 3: ActiveRecord vs. DataMapper (vs. ???) dla starszych baz danych MySQL

+0

Czy możesz udostępnić trochę schematu? – rwilliams

+0

Niestety, jest to własność intelektualna klienta, więc nie mogę go udostępnić. –

Odpowiedz

12

Mogę być stronniczy wobec DataMapper, ale myślę, że DM jest ogólnie dobrym rozwiązaniem do integracji ze starszymi bazami danych.

  • DM umożliwia mapowanie sensownych modeli i własności nazwy tajemniczych spuścizna konwencji nazewnictwa tabeli i kolumn. Umożliwia to albo na modelu dla modelu/właściwości, albo dla całej aplikacji.

  • DM obsługuje właściwości leniwych, które będą pobierane tylko wtedy, gdy faktycznie uzyskano do nich dostęp.

  • DM ma płynną obsługę złożonych kluczy podstawowych.

  • DM tylko dba o właściwości (kolumny), które jawnie deklarujesz w swoich modelach . Pozostałe kolumny nigdy nie zostaną dotknięte ani przeczytane.

  • DM działa dobrze z ograniczeniami klucza obcego w bazie danych i przy pomocy dm-constraints obsługuje także ich tworzenie.

Istnieje również dokumentacja na temat http://datamapper.org/docs/legacy.

5

Istnieje również biblioteka dm-types-legacy (https://github.com/postmodern/dm-types-legacy), która udostępnia typowe typy DM do mapowania w dziwnie sformatowanych danych (numeryczne adresy IP, HTML/URI zakodowany tekst, ciągi Data/Czas).

+1

Czy to działa z datetime_select? Na przykład próbuję zaktualizować pole datetime i nie działa z tego powodu: "published_at (1i)" => "2010", "published_at (2i)" => "11", "published_at (3i)" => "14", "published_at (4i)" => "07", "published_at (5i)" => "59" –