Encje w Drupalu. Tworzenie własnych encji i ich wpływ na poprawę wydajności



Podobne dokumenty
Wprowadzenie do Doctrine ORM

Bazy Danych i Usługi Sieciowe

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Baza danych sql. 1. Wprowadzenie

WPROWADZENIE DO BAZ DANYCH

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

3. Budowa prostych raportów opartych o bazę danych

PHP: bazy danych, SQL, AJAX i JSON

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Projektowanie baz danych za pomocą narzędzi CASE

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Aspekty tworzenia witryn internetowych

Technologia informacyjna

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wstęp do relacyjnych baz danych. Jan Bartoszek

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

System Obsługi Zleceń

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Projektowani Systemów Inf.

TOPWEB SPSall Budowanie portalu intranetowego

Projektowanie systemów baz danych

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

5.3. Tabele. Tworzenie tabeli. Tworzenie tabeli z widoku projektu. Rozdział III Tworzenie i modyfikacja tabel

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Bazy danych i strony WWW

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Backend Administratora

Księgarnia PWN: Michael J. Hernandez Bazy danych dla zwykłych śmiertelników

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

Podstawy technologii WWW

Aplikacje Internetowe

Co nowego w Drupalu 8. Grzegorz Bartman Jarosław Bartman

BalticBottomBase. Instytut Morski w Gdańsku Gdańsk,

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Kostki OLAP i język MDX

RELACYJNE BAZY DANYCH

Dział Temat lekcji Ilość lekcji. godz. 1 Organizacja zajęć Omówienie programu nauczania 3

Część 3 - Konfiguracja

Bazy Danych i Usługi Sieciowe

Wprowadzenie do baz danych

BAZY DANYCH. Co to jest baza danych. Przykłady baz danych. Z czego składa się baza danych. Rodzaje baz danych

Krzysztof Kluza proste ćwiczenia z baz danych

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Technologie baz danych

BIBLIOTEKA CYFROWA JAKO KONTENER TREŚCI DLA PORTALI INTERNETOWYCH. DLIBRA & DRUPAL DWA SYSTEMY, JEDNA WITRYNA.

Symfonia Produkcja. Kreator raportów. Wersja 2013

Zapytania i wstawianie etykiet z bazy danych do rysunku

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

Systemy baz danych. mgr inż. Sylwia Glińska

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

ECDL/ICDL Zaawansowane użytkowanie baz danych Moduł A3 Sylabus, wersja 2.0

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Database Connectivity

Oracle PL/SQL. Paweł Rajba.

Tworzenie bazy danych w środowisku OpenOffice.org Base tabela, formularz, kwerenda, raport

INFORMATYKA W SELEKCJI

APEX zaawansowany raport

2017/2018 WGGiOS AGH. LibreOffice Base

Autor: Joanna Karwowska

Systemy informatyczne. Modelowanie danych systemów informatycznych

ECDL/ICDL Zaawansowane przetwarzanie tekstów Moduł A1 Sylabus, wersja 2.0

ĆWICZENIE Uruchomić Oracle Forms Builder. 2. Utworzyć nowy formularz (File->New->Form) 3. Nawiązać połączenie z bazą danych (file-connect).

Krzysztof Kadowski. PL-E3579, PL-EA0312,

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

5. Bazy danych Base Okno bazy danych

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

REFERAT O PRACY DYPLOMOWEJ

Nowości w 3.1. Andrzej Solski. CONTROLLING SYSTEMS sp. z o.o.

Tworzenie prostej etykiety i synchronizacja etykiet z wagą. AXIS Sp. z o.o. Kod produktu:

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Modele. Najcz. Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. BooleanField - pole logiczne, True/False

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Podstawowe zagadnienia z zakresu baz danych

INDECT. Projekt i implementacja prototypu systemu GIS dla akwizycji, wizualizacji i przetwarzania wiedzy o zagrożeniach.

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Transkrypt:

Encje w Drupalu Tworzenie własnych encji i ich wpływ na poprawę wydajności DrupalCamp Wrocław 2015 Grzegorz Bartman https://twitter.com/grzegorzbartman

O mnie Grzegorz Bartman http://twitter.com/grzegorzbartman https://drupal.org/user/363120 ponad 6 lat na drupal.org, PHP od 2002 roku Od 2013 Droptica http://www.droptica.pl/oferty-pracy zapraszamy do nas :)

Plan prezentacji Czym jest encja Jak łatwo zrobić własne encje w Drupalu Porównanie własnych encji z node'ami Dla kogo jest ta prezentacja Znasz Drupala i PHP Piszesz własne proste moduły Nie tworzyłeś własnych encji w Drupalu

Czym jest Encja? Pojęcie często używane w projektowaniu baz danych Encja to reprezentacja wyobrażonego lub rzeczywistego obiektu (wikipedia) Encja posiada atrybuty/właściwości Przykłady encji: Samochód (id_samochodu, marka, kolor, pojemność silnika) Osoba (id_osoby, imię, nazwisko, rok urodzenia) Właściciel samochodu (id, id_samochodu, id_osoby)

Standardowe podejście do tworzenia struktury danych w Drupalu Tworzymy nowy rodzaj zawartości Tworzymy pola do rodzaju zawartości

Standardowe podejście do tworzenia struktury danych w Drupalu Zalety: Wygodne i szybkie tworzenie struktury danych Łatwa edycja wyglądu i kolejności elementów na formularzu tworzenia treści Z tego powodu Drupal jest chwalony przez początkujących użytkowników

Struktura danych w Drupalu Fields Node - Node types: Boolean Car Page News Users File Image Image Engine size Job Description Text Taxonomy - Vocabularies Tags Cities News categories Term reference Node reference User reference Field collection

Struktura danych w Drupalu Entity Fields Node - Node types: Boolean Car Page News Users File Image Image Engine size Job Description Text Taxonomy - Vocabularies Tags Cities News categories Term reference Node reference User reference Field collection

Struktura danych w Drupalu Entity Fields Node - Node types: Boolean Car Page News Users File Image Image Engine size Job Description Taxonomy - Vocabularies Tags Custom entities (for example: Drupal Commerce module) Text Cities News categories Term reference Node reference User reference Field collection

Encje w Drupalu Rdzeń Drupala definiuje własne encje Encje w rdzeniu Drupala 7: Node Taxonomy User

Po co tworzyć własne encje?

Standardowe podejście do tworzenia struktury danych w Drupalu Wady: Nie mamy kontroli nad tym co się dzieje w bazie danych Każde pole to 2 dodatkowe tabele w bazie danych (field_data... i field_revision...) Im więcej pól i powiązań tym dłuższe zapytania SQL (JOIN, JOIN, JOIN...) Z tych powodów doświadczeni programiści nienawidzą Drupala

Dzięki encjom możemy dowolnie definiować strukturę tabel w bazie danych

Encje to nie tylko własna tabela w bazie danych Views może pobierać dane z encji Do encji można dodawać pola Moduł Rules może działać np. w momencie dodawania, edycji lub usuwania encji

Kiedy warto Potrzebna duża szybkość ładowania się serwisu/aplikacji Serwis/aplikacja będzie używana i rozwijana przez wiele lat, i chcemy wyeliminować późniejsze problemy z wydajnością oraz mieć możliwość elastycznej rozbudowy Dużo pól w nodach, użytkownikach lub innych encjach Chcemy mieć kontrole nad bazą danych

Kiedy nie warto Serwisy z treściami dla niezalogowanych użytkowników bez konieczności szybkiego odświeżania wyświetlanych danych po ich zmianie w bazie Lepiej i szybciej zrobić strukture na node'ach oraz cachowanie serwisu (varnish, memcache, inne) niż tworzyć dla danych własne encje

Plusy Dokładna kontrola nad strukturą danych oraz sposobem ich zarządzania przez Drupala (formularze dodawania i edycji, strony wyświetlania encji) Poprawa wydajności w stosunku do node'ów z polami

Minusy Bardziej czasochłonne w porównaniu do node'ów Dodatkowe czynności do wykonania: zaprojektowanie i utworzenie tabel w bazie danych utworzenie formularzy do dodawania treści szablony do wyświetlania encji testowanie czy wszystko działa poprawnie (zapis, edycja, usuwanie, powiązania)

Od czego zacząć?

Diagram związków encji (ERD) Warto mieć wizualizację tabel w bazie danych w postaci diagramu

Moduł Encje tworzymy korzystając z odpowiednich hook'ów we własnym module* hook_entity_info() definiuje strukturę encji hook_schema() definiuje tabelę w bazie danych do przechowywania encji

Analiza przykładów node.module

Inne przykłady modułów z encjami Profile2 Drupal Commerce Message

Moduł ECK https://www.drupal.org/project/eck Pozwala ma wyklikanie własnych encji, ale posiada ograniczenia dotyczące typów danych w encji (properties)

Moduł Model https://www.drupal.org/project/model Przykład encji, na podstawie kodu można szybko tworzyć własne encje Struktura encji + strony administracyjne

Moduł Model Pobierz moduł z drupal.org Zmień nazwę katalogu (np. na car) Zmień nazwy plików (model zamień na car) Zmień nazwy funkcji w plikach (model->car)

Moduł Model

Moduł Model

Moduł Model

Co zmienić w plikach Struktura bazy danych Plik: modulename.install Funkcja modulename_schema

Co zmienić w plikach Formularz dodawania i edycji encji: Plik: modulename.admin.inc Funkcja modulename_edit_form

Co zmienić w plikach Wyświetlanie encji Plik: modulename.module Metoda buildcontent w klasie carcontroller

Co zmienić w plikach Adresy stron wyświetlania i edycji encji Plik: modulename.admin.inc Metoda hook_menu w klasie caruicontroller

SQL: Encje vs Node Struktura danych do przechowywania informacji o samochodach i ich atrybutach: Nazwa Kolor Typ silnika Pojemność silnika Liczba drzwi

SQL: Encje vs Node Node car i pola

SQL: Encje vs Node Pobieranie danych z node'a i pól: SELECT * FROM node n LEFT JOIN field_data_field_color ON n.nid = field_data_field_color.entity_id LEFT JOIN field_data_field_engine_size ON n.nid = field_data_field_engine_size.entity_id LEFT JOIN field_data_field_doors ON n.nid = field_data_field_doors.entity_id LEFT JOIN field_data_field_engine_type ON n.nid = field_data_field_engine_type.entity_id

SQL: Encje vs Node Pobieranie danych z encji SELECT * FROM car;

Podział pracy przy projekcie w Drupalu Struktura danych w node'ach Site builder tworzy typy nodów i pola Site builder tworzy widoki, rulsy, dodaje pola Frontend developer dodaje css/html do widokow Struktura danych we własnych encjach Developer tworzy encje (modeluje baze danych), Site builder tworzy widoki, rulsy, dodaje pola Frontend developer dodaje css/html do widokow

Pytania?

Dziękuję za uwagę i zapraszam na stronę http://www.droptica.pl/oferty-pracy Oceń prezentację https://www.surveymonkey.com/s/djfj3qp