Równoległe kwerendy danych

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Indeksy w bazie danych Oracle
Przekształcanie dokumentów XML - XSL
Podział i zastosowanie
Podstawowe pojęcia programowania współbieżnego
Programowanie wielowątkowe
Modelowanie aktywności
Jarosław Kuchta Monitory.
Diagramy stanów i diagramy aktywności
Projektowanie bazy danych
Rafał Hryniów Tomasz Pieciukiewicz
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Generics w .NET 2.0 Łukasz Rzeszot.
SQL INJECTION Wykorzystanie błędów w językach skryptowych
XML + relacyjne bazy danych
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
SQL Server Native XML Web Services
Visual Studio Codename „Orcas”, LINQ
25/08/2001 Bazy danych II 1 Piotr Górczyński Wstęp do SQL.
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
Maciej Zabielski 15 stycznia 2003
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Język SQL – zapytania zagnieżdżone (podzapytania)
BIRT.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQLDziałanie select * from tab_kredyt wyświetla wszystko z tab_kredyt select Kredytobiorca, Bank, rodzaj, data_zawarcia, klasyfikacja from tab_kredyt.
ASP.NET i platforma.NET Technologie internetowe ( ) Tomasz Popów
Zapytania SQL: wydajność i optymalizacja
Wykład 8 Wojciech Pieprzyca
.NET Remoting Łukasz Zawadzki.
Wprowadzenie do programowania w języku Turbo Pascal
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Licencjonowanie Lync 2013 Poziom 200.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Przetwarzanie w oknie - nowa siła zapytań
MySQL – ODBC - ACCESS.
Witold Bołt Wprowadzenie do .NET Witold Bołt
Bezpieczna platforma SharePoint
Tablice, listy, obiekty w C# i nie tylko!
Programowanie równoległe Wojciech Grześkowiak2010/11/12.
Parallel Extension czyli programowanie równoległe != współbieżne na platformie .NET Framework 4.0 Wojciech Grześkowiak
LINQ (Language-INtegrated Query) Marcin Bohdziewicz s4070.
N OWOŚCI W SQL S ERVER 2008 Z PUNKTU WIDZENIA ZESPOŁÓW PROJEKTUJĄCYCH W.NET Oskar Jarczyk.
W praktyce Prelegent: Michał Cywiński
Programowanie Windows na przykładzie C# część 1
C# Cz.7 Refleksja, Atrybuty
C# Platforma .NET CZ.3 Kuba Ostrowski.
Cz.5. Podsumowanie zadania Kolekcje Iteratory Generics Linq.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Użytkowanie i programowanie Matlaba
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład nr 9 Programowanie sterowników PLC Piotr Bilski
Technologie Programowania seminarium
Platformy technologiczne
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Technologie internetowe i mobilne
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
Zapytania ( 3.0 ) wyrażenia zapytaniowe - querry expressions przestrzeń nazw LINQ - Language-Integrated Query 3 etapy : 1. określenie źródła danych, 2.
Optymalizacja zapytań w SQL Server
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Wątki, programowanie współbieżne
Realizacja aplikacji internetowych
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Podstawy programowania
Zapis prezentacji:

Równoległe kwerendy danych Jarosław Kuchta Programowanie Współbieżne Równoległe kwerendy danych

Podstawy LINQ – Language-Integrated Query PLINQ – Parallel LINQ język zapytań wbudowany w C# począwszy od wersji 3. PLINQ – Parallel LINQ równoległa wersja LINQ PLINQ

Przykład wyrażenia LINQ // The Three Parts of a LINQ Query: // 1. Data source. int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; // 2. Query creation.// numQuery is an IEnumerable<int> var numQuery = from num in numbers where (num % 2) == 0 select num; // 3. Query execution. foreach (int num in numQuery) Console.Write("{0,1} ", num); PLINQ

Źródła danych dla LINQ tablice C# łańcuchy znaków kolekcje i listy .NET bazy danych SQL zbiory danych ADO.NET dokumenty XML … PLINQ

Równoległa wersja wyrażenia LINQ // The Three Parts of a LINQ Query: // 1. Data source. int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; // 2. Query creation.// numQuery is an IEnumerable<int> var numQuery = from num in numbers.AsParallel() where (num % 2) == 0 select num; // 3. Query execution. foreach (int num in numQuery) Console.Write("{0,1} ", num); PLINQ

foreach a ForAll foreach (int num in numQuery) aBag.Add(Compute(num))); numQuery.ForAll ( (num) => aBag.Add(Compute(num)) ); PLINQ

Porównanie foreach i ForAll PLINQ

Zalety i wady PLINQ PLINQ dobrze się sprawdza, gdy: elementy kolekcji są niezależne od siebie operacje łatwo dzielą się na niezależne wątki pojedyncza operacja jest "dość długotrwała" Kosztem PLINQ jest narzut na: podział danych ze źródła danych podział zadań na wątki zebranie danych z wątków scalenie wyników PLINQ

Przykłady Opłacalne: Nieopłacalne: var queryA = from num in numberList.AsParallel() select ExpensiveFunction(num); Nieopłacalne: var queryB = from num in numberList.AsParallel() where num % 2 > 0 select num; PLINQ

Sekwencyjne wykonanie PLINQ PLINQ próbuje wykonać kwerendę przynajmniej tak samo szybko, jak LINQ. Przełącza się na wykonanie sekwencyjne, gdy zawiera klauzule: Select, indeksowaną Where, indeksowaną SelectMany lub ElementAt po zmianie kolejności lub filtrowaniu kolekcji wejściowej, Take, TakeWhile, Skip lub SkipWhile po zmianie kolejności kolekcji wejściowej, Concat, Reverse, Zip lub SequenceEquals, chyba że kolekcja wejściowa jest oryginalnie indeksowana PLINQ

Wymuszone wykonanie równoległe static void ForceParallel() { var customers = GetCustomers(); var parallelQuery = (from cust in customers.AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) where cust.City == "Berlin" select cust.CustomerName) .ToList(); } PLINQ

Określenie liczby procesorów var query = from item in source.AsParallel() .WithDegreeOfParallelism(2) where Compute(item) > 42 select item; PLINQ

Kwerenda równoległa z uporządkowaniem var orderedCities = (from city in cities.AsParallel().AsOrdered() where city.Population > 10000 select city) .Take(1000); PLINQ

Samodzielne partycjonowanie danych / Static partitioning requires indexable source. Load balancing can use any IEnumerable. var nums = Enumerable.Range(0, 100000000).ToArray(); // Create a load-balancing partitioner. Or specify false for static partitioning. Partitioner<int> customPartitioner = Partitioner.Create(nums, true); // The partitioner is the query's data source. var q = from x in customPartitioner.AsParallel() select x * Math.PI; q.ForAll((x) => { ProcessData(x); }); PLINQ

Wizualizacja równoległości PLINQ

Literatura http://msdn.microsoft.com/en-us/library/dd460688.aspx PLINQ