官术网_书友最值得收藏!

How it works on Linux

SQL Server is a product with a 30 years long history of development. We are speaking about millions of lines of code on a single operating system (Windows). The logical question is how Microsoft successfully ports those millions of lines of code to the Linux platform so fast. SQL Server on Linux officially became public in the autumn of 2016. This process would take years of development and investment. Fortunately, it was not so hard.

From version 2005, the SQL Server database engine had a platform layer called SQL operating system (SOS). It is a layer between the SQL Server engine and the Windows operating systems.

The main purpose of SOS is to minimize the number of system calls by letting SQL Server deal with its own resources. It greatly improves performance, stability, and the debugging process. On the other hand, it is platform dependent and does not provide an abstraction layer. That was the first big problem encountered before even beginning to think about creating the Linux version.

Project Drawbridge is a Microsoft research project that was created to minimize virtualization resources when a host runs many VM on the same physical machine. The technical explanation goes beyond the scope of this book (https://www.microsoft.com/en-us/research/project/drawbridge/). Drawbridge bring us to the solution of the problem.

Linux solutions use a hybrid approach that combines SOS and Liberty OS from the Drawbridge project to create SQL PAL (SQL Platform Abstraction Layer). This approach creates a set of SOS API calls that does not require Win32 or NT calls and separates them from platform depended code. This is a dramatically reduced process of rewriting SQL Server from its native environment to Linux platform. The next figure gives you a high level overview of SQL PAL (https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/16/sql-server-on-linux-how-introduction/):

Figure 3-2. SQL PAL architecture.
主站蜘蛛池模板: 浦县| 诏安县| 丰镇市| 上饶县| 乌审旗| 长沙县| 吉水县| 石家庄市| 广水市| 杨浦区| 屏东县| 湖南省| 彭阳县| 辉县市| 洛南县| 新建县| 盐源县| 讷河市| 阳山县| 太仓市| 汾西县| 安吉县| 辰溪县| 炉霍县| 富蕴县| 敖汉旗| 阳泉市| 泗水县| 衡山县| 微山县| 大同市| 榕江县| 田林县| 农安县| 汾阳市| 仁寿县| 永济市| 塘沽区| 东乡族自治县| 枣阳市| 南通市|