SlideShare une entreprise Scribd logo
1  sur  18
GlobalsDB Entity Framework
↔
Команда: Субботин Валерий
Ковалев Евгений
Ментор: Широкопетлева М.С.
Харьковский национальный университет
радиоэлектроники
Почему Intersystems GlobalsDB ?
Простота
использования
Универсальность
Поддержка LINQ
Сериализация
(десериализация)
данных в глобалы
Надежность и
высокая
скорость
работы
Требования к проекту
Привлечение
внимания
разработчиков к
GlobalsDB за счет
значительного
снижения
сложности
интеграции в
приложение
Способствование
увеличению
числа
приложений,
использующих
нереляционные
БД (GlobalsDB)
Увеличится
число и
быстродействие
приложений,
работающих с
“Big Data”
Человечество
получит
огромное число
инструментов,
облегчающих
повседневную
жизнь
Цели проекта
GlobalsDB Cache eXTreme
GlobalsDB Entity Framework
Data
reader/writer
LINQ provider
Client
Архитектура
LINQ
Language Integrated Query (LINQ) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего
SQL, в языки программирования платформы .NET Framework.
Преимущества :
Знакомый синтаксис для написания запросов
Проверка на наличие ошибок синтаксиса и на безопасность типа при компиляции
Улучшенная поддержка отладчика
Поддержка IntelliSense
Краткие и удобочитаемые, особенно при фильтрации нескольких условий
Предоставляют широкие возможности фильтрации, упорядочивания и группировки с минимумом кода приложения
Могут переноситься в другие источники данных практически без изменений
Пример запроса на получение сущности «Country», имя которой начинается с определенной подстроки
ADO .NET (SQL) Entity Framework (SQL)
private static List<Country> GetCountryWithStartLetters(string startLetters)
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
const string commandText = "SELECT Name, Continent, HasSee, Description " +
"FROM Countries " +
"WHERE Name LIKE @Mask";
var sqlCommand = new SqlCommand(commandText, connection);
sqlCommand.Parameters.AddWithValue("@Mask", startLetters + "%");
var reader = sqlCommand.ExecuteReader();
var result = new List<Country>();
while (reader.Read())
{
result.Add(new Country
{
Name = reader.GetString(0),
Continent = reader.GetFieldValue<Continent>(1),
HasSee = reader.GetBoolean(2),
Description = reader.GetString(3)
});
}
return result;
}
}
private static List<Country> GetCountryWithStartLetters
(string startLetters)
{
using (var context = new Context(connectionString))
{
var result = context.Countries.Where(c =>
c.Name.StartsWith(startLetters)).ToList();
return result;
}
}
[Table(Name = "TestCountry")]
public sealed class Country
{
[Column(IsPrimaryKey = true)]
public string Name { get; set; }
[Column(Name = "ContinentType")]
public Continent Continent { get; set; }
[Column()]
public bool HasSee { get; set; }
[Column()]
public string Description { get; set; }
[Column()]
public List<Town> Towns { get; set; }
}
Описание сущности, которую планируется сохранить в БД
Существуют определенные правила по применению атрибута ColumnAttribute:
1. Сущность должна иметь хотя бы один первичный ключ, помеченный с помощью
свойства IsPrimaryKey атрибута ColumnAttribute.
2. Для автоинкрементных ключей (заданных с помощью свойства IsDbGenerated)
поддерживаются только целочисленные типы (short, int или long)
3. Только один автоинкрементный ключ разрешен
4. Сущность должна объявлять либо автоинкрементный ключ, либо обычный, но
не оба сразу.
Создание контекста
class Context : DataContext
{
public Table<Country> Country { get; set; }
}
private static void InsertExample(Country country)
{
using (var ctx = new Context())
{
ctx.Country.InsertOnSubmit(country);
ctx.SubmitChanges();
}
}
Пример запроса на добавление новой страны в БД
Схема хранения данных в глобалах
using (var ctx = new Context())
{
var townsNames = ctx.Country.SelectMany(c=>c.Towns).Select(t=>t.Name).ToList();
}
2
3
2
1
3
Последовательность извлечения данных по LINQ - запросу
Демонстрационное CRUD - приложение
Структура
Сравнение быстродействия GlobalsDB EF и Microsoft Entity Framework
1065 1913
179 715
6549
27883
214 848
0
5000
10000
15000
20000
25000
30000
Чтение всех данных Получение количества
городов в каждой стране
Добавление/удаление
города
Получение стран
Европы, у которых
больше 1 города
Количество выполненных запросов за 1 секунду
MS Entity Framework GlobalsDB EF
ВЫВОДЫ:
Представленный framework упростит процесс работы с GlobalsDb, повысит
скорость разработки приложений, а также позволит с легкостью перевести
существующие приложения, использующие реляционные БД, на GlobalsDb,
если понадобиться повысить эффективность слоя данных.
Проект на данный момент не имеет аналогов на рынке, способных сравниться
по функционалу с данной работой.
Ссылки :
Подробная документация http://goo.gl/C2BdCp
Исходный код демо-приложения http://goo.gl/U9IQ5A
Исходный код GlobalsDB EF http://goo.gl/Bkq806
Путь к работающему демо-приложению http://109.86.224.112:30190/
СПАСИБО ЗА ВНИМАНИЕ

Contenu connexe

En vedette

Hanger_Скирда, Потапский
Hanger_Скирда, ПотапскийHanger_Скирда, Потапский
Hanger_Скирда, ПотапскийGolden Byte
 
Дмитрий Долотов, г. Киев
Дмитрий Долотов, г. КиевДмитрий Долотов, г. Киев
Дмитрий Долотов, г. КиевGoldenByte2014
 
Победители "Золотого Байта-2014" НUС+Team
Победители "Золотого Байта-2014" НUС+TeamПобедители "Золотого Байта-2014" НUС+Team
Победители "Золотого Байта-2014" НUС+TeamGoldenByte2014
 
Победители "Золотого Байта-2014" Andres Jakovlev и Iris Müntel
Победители "Золотого Байта-2014" Andres Jakovlev и Iris MüntelПобедители "Золотого Байта-2014" Andres Jakovlev и Iris Müntel
Победители "Золотого Байта-2014" Andres Jakovlev и Iris MüntelGoldenByte2014
 
Победители чемпионата "Золотой Байт - 2014" Команда Studium
Победители чемпионата "Золотой Байт - 2014" Команда StudiumПобедители чемпионата "Золотой Байт - 2014" Команда Studium
Победители чемпионата "Золотой Байт - 2014" Команда StudiumGoldenByte2014
 
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)Golden Byte
 
Hanger_команда Cubics (Скирда, Потапский)
Hanger_команда Cubics (Скирда, Потапский)Hanger_команда Cubics (Скирда, Потапский)
Hanger_команда Cubics (Скирда, Потапский)Golden Byte
 
LiveHroom presentation_Mariupol
LiveHroom presentation_MariupolLiveHroom presentation_Mariupol
LiveHroom presentation_MariupolGolden Byte
 
TFN_Золотой Байт-2015
TFN_Золотой Байт-2015TFN_Золотой Байт-2015
TFN_Золотой Байт-2015Golden Byte
 
IThead under_control
IThead under_controlIThead under_control
IThead under_controlGolden Byte
 
Time Challenge_presentation
 Time Challenge_presentation Time Challenge_presentation
Time Challenge_presentationGolden Byte
 
Алексей Гребенник Web-design
Алексей Гребенник Web-designАлексей Гребенник Web-design
Алексей Гребенник Web-designGoldenByte2014
 

En vedette (20)

Hanger_Скирда, Потапский
Hanger_Скирда, ПотапскийHanger_Скирда, Потапский
Hanger_Скирда, Потапский
 
Дмитрий Долотов, г. Киев
Дмитрий Долотов, г. КиевДмитрий Долотов, г. Киев
Дмитрий Долотов, г. Киев
 
Победители "Золотого Байта-2014" НUС+Team
Победители "Золотого Байта-2014" НUС+TeamПобедители "Золотого Байта-2014" НUС+Team
Победители "Золотого Байта-2014" НUС+Team
 
Ava team your_taxi
Ava team your_taxiAva team your_taxi
Ava team your_taxi
 
я – отличник!
я – отличник!я – отличник!
я – отличник!
 
марк прутский
марк прутскиймарк прутский
марк прутский
 
Победители "Золотого Байта-2014" Andres Jakovlev и Iris Müntel
Победители "Золотого Байта-2014" Andres Jakovlev и Iris MüntelПобедители "Золотого Байта-2014" Andres Jakovlev и Iris Müntel
Победители "Золотого Байта-2014" Andres Jakovlev и Iris Müntel
 
E cube presentation new
E cube presentation newE cube presentation new
E cube presentation new
 
Победители чемпионата "Золотой Байт - 2014" Команда Studium
Победители чемпионата "Золотой Байт - 2014" Команда StudiumПобедители чемпионата "Золотой Байт - 2014" Команда Studium
Победители чемпионата "Золотой Байт - 2014" Команда Studium
 
Sergiy salnikov abcdenglish
Sergiy salnikov abcdenglishSergiy salnikov abcdenglish
Sergiy salnikov abcdenglish
 
Familiar reader
Familiar readerFamiliar reader
Familiar reader
 
Plastico_kyiv
Plastico_kyivPlastico_kyiv
Plastico_kyiv
 
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)
Команда Ice Cube (Соколов Ярослав, Колодочка Янислав, Борлова Эрика)
 
Hanger_команда Cubics (Скирда, Потапский)
Hanger_команда Cubics (Скирда, Потапский)Hanger_команда Cubics (Скирда, Потапский)
Hanger_команда Cubics (Скирда, Потапский)
 
LiveHroom presentation_Mariupol
LiveHroom presentation_MariupolLiveHroom presentation_Mariupol
LiveHroom presentation_Mariupol
 
TFN_Золотой Байт-2015
TFN_Золотой Байт-2015TFN_Золотой Байт-2015
TFN_Золотой Байт-2015
 
IThead under_control
IThead under_controlIThead under_control
IThead under_control
 
Well being
Well beingWell being
Well being
 
Time Challenge_presentation
 Time Challenge_presentation Time Challenge_presentation
Time Challenge_presentation
 
Алексей Гребенник Web-design
Алексей Гребенник Web-designАлексей Гребенник Web-design
Алексей Гребенник Web-design
 

Similaire à KTURE_1 место в NoSQL Expert

Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderАлександр Брич
 
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenterУправление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenterCisco Russia
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeSQALab
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentationsef2009
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.UNETA
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKCisco Russia
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data ServicesMedia Gorod
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureVadim Novitskiy
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4Bars Group
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETMikhail Shcherbakov
 
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ LibraryИнтервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ LibraryTatyanazaxarova
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineVolha Banadyseva
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложенийJack Chikovany
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Хватит писать инфраструктурный код
Хватит писать инфраструктурный кодХватит писать инфраструктурный код
Хватит писать инфраструктурный кодVadim Martynov
 

Similaire à KTURE_1 место в NoSQL Expert (20)

Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
 
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenterУправление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenter
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentation
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data Services
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows Azure
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ LibraryИнтервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложений
 
HTML 5
HTML 5HTML 5
HTML 5
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Хватит писать инфраструктурный код
Хватит писать инфраструктурный кодХватит писать инфраструктурный код
Хватит писать инфраструктурный код
 

KTURE_1 место в NoSQL Expert

  • 1. GlobalsDB Entity Framework ↔ Команда: Субботин Валерий Ковалев Евгений Ментор: Широкопетлева М.С. Харьковский национальный университет радиоэлектроники
  • 3. Простота использования Универсальность Поддержка LINQ Сериализация (десериализация) данных в глобалы Надежность и высокая скорость работы Требования к проекту
  • 4. Привлечение внимания разработчиков к GlobalsDB за счет значительного снижения сложности интеграции в приложение Способствование увеличению числа приложений, использующих нереляционные БД (GlobalsDB) Увеличится число и быстродействие приложений, работающих с “Big Data” Человечество получит огромное число инструментов, облегчающих повседневную жизнь Цели проекта
  • 5. GlobalsDB Cache eXTreme GlobalsDB Entity Framework Data reader/writer LINQ provider Client Архитектура
  • 6. LINQ Language Integrated Query (LINQ) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework. Преимущества : Знакомый синтаксис для написания запросов Проверка на наличие ошибок синтаксиса и на безопасность типа при компиляции Улучшенная поддержка отладчика Поддержка IntelliSense Краткие и удобочитаемые, особенно при фильтрации нескольких условий Предоставляют широкие возможности фильтрации, упорядочивания и группировки с минимумом кода приложения Могут переноситься в другие источники данных практически без изменений
  • 7. Пример запроса на получение сущности «Country», имя которой начинается с определенной подстроки ADO .NET (SQL) Entity Framework (SQL) private static List<Country> GetCountryWithStartLetters(string startLetters) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); const string commandText = "SELECT Name, Continent, HasSee, Description " + "FROM Countries " + "WHERE Name LIKE @Mask"; var sqlCommand = new SqlCommand(commandText, connection); sqlCommand.Parameters.AddWithValue("@Mask", startLetters + "%"); var reader = sqlCommand.ExecuteReader(); var result = new List<Country>(); while (reader.Read()) { result.Add(new Country { Name = reader.GetString(0), Continent = reader.GetFieldValue<Continent>(1), HasSee = reader.GetBoolean(2), Description = reader.GetString(3) }); } return result; } } private static List<Country> GetCountryWithStartLetters (string startLetters) { using (var context = new Context(connectionString)) { var result = context.Countries.Where(c => c.Name.StartsWith(startLetters)).ToList(); return result; } }
  • 8. [Table(Name = "TestCountry")] public sealed class Country { [Column(IsPrimaryKey = true)] public string Name { get; set; } [Column(Name = "ContinentType")] public Continent Continent { get; set; } [Column()] public bool HasSee { get; set; } [Column()] public string Description { get; set; } [Column()] public List<Town> Towns { get; set; } } Описание сущности, которую планируется сохранить в БД
  • 9. Существуют определенные правила по применению атрибута ColumnAttribute: 1. Сущность должна иметь хотя бы один первичный ключ, помеченный с помощью свойства IsPrimaryKey атрибута ColumnAttribute. 2. Для автоинкрементных ключей (заданных с помощью свойства IsDbGenerated) поддерживаются только целочисленные типы (short, int или long) 3. Только один автоинкрементный ключ разрешен 4. Сущность должна объявлять либо автоинкрементный ключ, либо обычный, но не оба сразу.
  • 10. Создание контекста class Context : DataContext { public Table<Country> Country { get; set; } }
  • 11. private static void InsertExample(Country country) { using (var ctx = new Context()) { ctx.Country.InsertOnSubmit(country); ctx.SubmitChanges(); } } Пример запроса на добавление новой страны в БД
  • 13. using (var ctx = new Context()) { var townsNames = ctx.Country.SelectMany(c=>c.Towns).Select(t=>t.Name).ToList(); } 2 3 2 1 3 Последовательность извлечения данных по LINQ - запросу
  • 14. Демонстрационное CRUD - приложение Структура
  • 15.
  • 16. Сравнение быстродействия GlobalsDB EF и Microsoft Entity Framework 1065 1913 179 715 6549 27883 214 848 0 5000 10000 15000 20000 25000 30000 Чтение всех данных Получение количества городов в каждой стране Добавление/удаление города Получение стран Европы, у которых больше 1 города Количество выполненных запросов за 1 секунду MS Entity Framework GlobalsDB EF
  • 17. ВЫВОДЫ: Представленный framework упростит процесс работы с GlobalsDb, повысит скорость разработки приложений, а также позволит с легкостью перевести существующие приложения, использующие реляционные БД, на GlobalsDb, если понадобиться повысить эффективность слоя данных. Проект на данный момент не имеет аналогов на рынке, способных сравниться по функционалу с данной работой.
  • 18. Ссылки : Подробная документация http://goo.gl/C2BdCp Исходный код демо-приложения http://goo.gl/U9IQ5A Исходный код GlobalsDB EF http://goo.gl/Bkq806 Путь к работающему демо-приложению http://109.86.224.112:30190/ СПАСИБО ЗА ВНИМАНИЕ