Архивы по Категориям: Базы данных и СУБД

MSSQL — Хранимые процедуры

С сайта DEVELS.RU (уже не работает)

Хранимая процедура представляет собой запрос, хранящийся в БД SQL Server. Она повышает скорость и эффективность БД и вызывается командой

Exec имя_хранимой_процедуры

Базовая хранимая процедура.

Это самая простая хранимая процедура, которая возвращает результаты, не требуя никаких параметров.
Читать далее »

Древовидные структуры данных в РБД. Часть 2

Отсюда: http://www.ibase.ru/treedb2/
Сохранено в ноябре 2009

Кузьменко Дмитрий, iBase.ru, обновления – 02.04.2004.

Читать далее »

Древовидные структуры данных в РБД

Кузьменко Дмитрий, iBase.ru

Отсюда http://www.ibase.ru/treedb/
Сохранено в ноябре 2009
Читать далее »

Работа с MySQL в C#

Отсюда https://kbss.ru/blog/lang_c_sharp/1.html

Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правильный выбор. Первое с чего бы хотелось начать это с настоятельной рекомендации: «Программируя под .NET всегда пользуйтесь MySQL .NET — Коннектором!». Можно конечно и через ADO подключаться к базе но это чревато тем что в будущем вам просто будет необходимо вносить изменения при переходе на Windows Vista и выше.
Читать далее »

Mongo и C#: агрегация, pipeline

Очень старый кусок кода (~2012-13 гг.), но вдруг пригодится когда-нибудь, память освежить.

            var match = new BsonDocument 
            { { 
                    "$match", new BsonDocument 
                    {         
                        {
                            "Date", new BsonDocument 
                            { { "$lte", DateTime.Now } }
                        }
                    } 
            } };
            var group = new BsonDocument
            { {
                    "$group", new BsonDocument
                    {
                        { "_id","$Blog._id" },
                        {
                            "PublishDate", new BsonDocument 
                            { { "$max", "$Date" } }
                        }
                    }
            } };
 
            var project = new BsonDocument
            { {
                    "$project", new BsonDocument
                    {
                        { "Blog._id", "$_id" },
                        { "PublishDate", "$PublishDate" }
                    }
            } };
 
            var sort = new BsonDocument { { "$sort", new BsonDocument { { "PublishDate", -1 } } } };
            var skip = new BsonDocument { { "$skip", (page - 1) * count } };
            var limit = new BsonDocument { { "$limit", count } };
 
            var pipeline = new[] { match, group, sort, project, skip, limit };
            var lastPostsInBlogs = this.mongoContext.Posts
                .Aggregate(pipeline)
                .ResultDocuments.Select(x => BsonSerializer.Deserialize<PostDoc>(x))
                .ToList();
 
            return
                lastPostsInBlogs.Join(
                    this.mongoContext.Blogs.AsQueryable<BlogDoc>()
                        .Where(condition),
                    pb => pb.Blog.Id,
                    b => b.Id,
                    (pb, b) =>
                    new BlogItem()
                    {
                        Id = b.StrId,
                        Alias = b.Alias,
                        Title = b.Title,
                        Description = b.Info,
                        CoverFile = b.CoverFile ?? DomainAppSettings.DefaultPreview,
                        CanPost = b.Owner.AccountId == visitorId || (b.IsCommon && b.Members.Contains(visitorId)),
                        LastUpdated = b.LastUpdated,
                        LastPosts = this.mongoContext.Posts
                            .AsQueryable<PostDoc>()
                            .Where(p => p.Blog.Id == b.Id && p.PublishDate < DateTime.Now && !p.IsDeleted)
                            .OrderByDescending(p => p.PublishDate)
                            .Take(3)
                            .Select(p => new PostLine()
                            {
                                Id = p.StrId,
                                Number = p.Number,
                                BlogAlias = p.Blog.Alias,
                                Title = p.Title,
                                Date = p.Date
                            })
                    }).ToArray();

LINQ Join vs. Contains

Хозяйке на заметку.
В данном примере всё выполняется в памяти приложения.

http://stackoverflow.com/questions/16824510/select-multiple-records-based-on-list-of-ids-with-linq

Solution with .Where and .Contains has complexity of O(N square). Simple .Join should have a lot better performance (close to O(N) due to hashing). So the correct code is:

_dataContext.UserProfile.Join(idList, up => up.ID, id => id, (up, id) => up);

And now result of my measurement. I generated 100 000 UserProfiles and 100 000 ids. Join took 32ms and .Where with .Contains took 2 minutes and 19 seconds! I used pure IEnumerable for this testing to prove my statement. If you use List instead of IEnumerable, .Where and .Contains will be faster. Anyway the difference is significant. The fastest .Where .Contains is with Set<>. All it depends on complexity of underlying coletions for .Contains. Look at this post to learn about linq complexity.Look at my test sample below:

    private static void Main(string[] args)
    {
        var userProfiles = GenerateUserProfiles();
        var idList = GenerateIds();
        var stopWatch = new Stopwatch();
        stopWatch.Start();
        userProfiles.Join(idList, up => up.ID, id => id, (up, id) => up).ToArray();
        Console.WriteLine("Elapsed .Join time: {0}", stopWatch.Elapsed);
        stopWatch.Restart();
        userProfiles.Where(up => idList.Contains(up.ID)).ToArray();
        Console.WriteLine("Elapsed .Where .Contains time: {0}", stopWatch.Elapsed);
        Console.ReadLine();
    }
 
    private static IEnumerable<int> GenerateIds()
    {
       // var result = new List<int>();
        for (int i = 100000; i > 0; i--)
        {
            yield return i;
        }
    }
 
    private static IEnumerable<UserProfile> GenerateUserProfiles()
    {
        for (int i = 0; i < 100000; i++)
        {
            yield return new UserProfile {ID = i};
        }
    }

Console output:

Elapsed .Join time: 00:00:00.0322546
Elapsed .Where .Contains time: 00:02:19.4072107

А вот про SQL

http://stackoverflow.com/questions/1200295/sql-join-vs-in-performance

If the joining column is UNIQUE and marked as such, both these queries yield the same plan in SQL Server.

If it’s not, then IN is faster than JOIN on DISTINCT.

Атрибуты полей

EntityFramework CodeFirst

https://msdn.microsoft.com/en-us/data/jj591583.aspx

Про XML и MS SQL

http://djekmusic.blogspot.ru/2012/07/xml-microsoft-sql-server-2008-xml.html
http://djekmusic.blogspot.ru/2012/07/xml-microsoft-sql-server-2008-xml_17.html
http://djekmusic.blogspot.ru/2012/07/xml-microsoft-sql-server-2008-xml_23.html

https://social.msdn.microsoft.com/Forums/en-US/58c1b27d-3274-4942-962c-06ff0671661b/how-to-use-entity-frame-work-with-xml-fields-in-relational-database?forum=adodotnetentityframework

и про джейсон
http://blogs.msdn.com/b/jocapc/archive/2015/05/16/json-support-in-sql-server-2016.aspx

Схема мультиязычной БД

Несколько примеров для MySQL в подтверждение выработанной мной схемы.

http://www.codeproject.com/Articles/752301/Multilanguage-Database-Design-in-MySQL

Instacode

Нашла сервис для создания инстакартинок из кода.
http://instacod.es/

Читать далее »

C#-MongoDB Polymorphic Classes

Появилась задача хранить документы с разной структурой в одной коллекции.

Вопрос на СО
http://stackoverflow.com/questions/13956413/mongodb-embedded-polymorphic-objects

Документация
http://docs.mongodb.org/ecosystem/tutorial/serialize-documents-with-the-csharp-driver/#polymorphic-classes-and-discriminators

Мои примеры.
Читать далее »

SQL Joins

Как же так тут до сих пор нет этой картинки! Срочно исправляю.

Подборка ссылок

Поработаем с MongoDb
http://habrahabr.ru/post/127290/

Experimenting with MongoDB from C#
http://odetocode.com/Blogs/scott/archive/2009/10/13/experimenting-with-mongodb-from-c.aspx

The NoSQL Movement, LINQ, and MongoDB – Oh My!
The NoSQL Movement, LINQ, and MongoDB – Oh My!

NoSQL Data Modeling Techniques
NoSQL Data Modeling Techniques

Куда идет NoSQL с MongoDB
http://msdn.microsoft.com/ru-ru/magazine/ee310029.aspx

MongoDB vs. SQL Server 2008 Performance Showdown
MongoDB vs. SQL Server 2008 Performance Showdown

PTOM: The Dependency Inversion Principle
http://lostechies.com/jimmybogard/2008/03/31/ptom-the-dependency-inversion-principle/

StructureMap — краткий справочник для работы (1/3)
http://habrahabr.ru/post/125613/

Феерическая расстановка точек над DI/IOC (контейнерами)
http://www.codehelper.ru/questions/352/феерическая-расстановка-точек-над-diioc-контейнерами

История одного маппера
http://gandjustas.blogspot.com/2010/01/blog-post.html

Ajax отправка данных из формы
http://itfound.ru/45-ajax-otpravka-dannih-formi.html

Backbone.js для «чайников»
http://habrahabr.ru/post/127049/

Javascript for Bootstrap — tabs
http://twitter.github.com/bootstrap/javascript.html#tabs

Написание сложных интерфейсов с Backbone.js
http://habrahabr.ru/post/118782/

Backbone Tutorials
http://backbonetutorials.com/

Backbone Todos
http://documentcloud.github.com/backbone/#examples-todos

jQuery.post()
http://api.jquery.com/jQuery.post/

Tag Cloud in ASP.NET MVC using Clickable HTML 5 Canvas Elements
http://www.dotnetcurry.com/ShowArticle.aspx?ID=785

Creating tag cloud using ASP.NET MVC and Entity Framework
http://weblogs.asp.net/gunnarpeipman/archive/2011/04/28/creating-tag-cloud-using-asp-net-mvc-and-entity-framework.aspx

Creating a Tag Cloud using ASP.NET MVC and the Entity Framework
http://www.mikesdotnetting.com/Article/107/Creating-a-Tag-Cloud-using-ASP.NET-MVC-and-the-Entity-Framework

Визуализация графов. Метод связывания ребер
http://habrahabr.ru/post/116758/

Эксперимент с голографическим кодированием и декодированием информации
http://habrahabr.ru/post/120051/

Z̩̣̫̗̙͇̯̣̓̔̆ͭA̳͔̖̔̆͡L̨̤̖͖̃ͫͧ͂ͨ̿̚͢G͓̭̦̺̗̱̲͙ͪ́Ơ̤̝̣̜͕̖̇̄!̼͎̰͔̽ͦ̍ͩ̏̾

http://textozor.com/zalgo-text/

Аналог MySQL оператора LIMIT в MS SQL

В MS SQL нет там такого оператора как LIMIT. Но, есть конечно же аналоги. Например, если вы хотите ограничить выборку до 10 строк, это будет выглядеть так:

SELECT TOP 10 * FROM some_table;

Запрос приведенный выше сделает тоже самое что и

SELET * FROM some_table LIMIT 10;

в MySQL

По такому же принципу можно организовать и LIMIT X, Y. Например, для постраничного вывода.

Пример инфологической модели

Описание инфологических моделей будет позже, пока просто выкладываю понравившийся пример.

Страница 1 из 212