Vous êtes sur la page 1sur 12

Encryptions, compression

et partitionnement des
donnes
Version 1.0

Grgory CASANOVA

Compression, encryption et partitionnement des donnes

Sommaire

Introduction ..................................................................................................................................... 3

Encryption transparente des donnes. ........................................................................................... 4

2.1

Principe dencryptions transparente des donnes ................................................................. 4

2.2

Mise en uvre......................................................................................................................... 4

Compression des donnes .............................................................................................................. 6


3.1

Principe de compression des donnes .................................................................................... 6

3.2

Mise en place........................................................................................................................... 6

Partitionnement des donnes ......................................................................................................... 8


4.1

Crer une fonction de partitionnement .................................................................................. 8

4.2

Cration du schma de partitionnement ................................................................................ 9

4.3

Table partitionne ................................................................................................................. 10

4.4

Indexes partitionns .............................................................................................................. 11

Conclusion ..................................................................................................................................... 12

Dotnet France Association

Compression, encryption et partitionnement des donnes

1 Introduction
Dans une base de donnes, ladministrateur se pose plusieurs questions pratiques, et notamment les
suivantes : La scurit de mes donnes est-elle suffisante, de faon ce quelles ne soient pas corrompues ou
bien, utilises mauvais escient ? La place que mes donnes occupent sur le disque est trop importante,
comment rduire cet espace ? Comment viter que le retour de mes donnes dans mes applications
clientes soit de plus en plus lent, et comment amliorer la monte en charge de mes donnes ?
Bien entendu, il nexiste pas la scurit parfaite, et la sauvegarde despace de stockage idale, mais il
existe deux procds qui vont nous aider dans cette optique :
-

Lencryption transparente de donnes.


La compression des donnes.

De plus, loptimisation des retours de donnes, ou bien la meilleure monte en charge des donnes peut
tre mise en place par le partitionnement des tables ou des index.
Nous allons expliquer, quels sont les principes, les avantages, et comment mettre en uvre ces trois
procds, aujourdhui essentiel ladministration de base de donnes en entreprise.

Dotnet France Association

Compression, encryption et partitionnement des donnes

2 Encryption transparente des donnes.


SQL Server 2008 propose un systme dencryptions des fichiers de donnes et des fichiers journaux pour
assurer toujours plus la scurit des donnes en entreprise. Lencryptions transparente, ou TDE (Transparent
Data Encryption) est dynamique, ce qui signifie qu chaque criture de donnes sur le disque, lencryption de
ces nouvelles donnes sera faite automatiquement.
Mais pourquoi Transparent? Tout simplement parce que cette encryption des donnes, ne sera en
aucun cas visible par lutilisateur final des donnes. Les donnes sont encryptes lcriture sur le disque, et
dcryptes par le mme procd lors de leurs utilisations par lutilisateur final, si toute fois celui-ci possde les
droits pour les utiliser.

2.1 Principe dencryptions transparente des donnes


Concrtement, nous utiliserons une cl principale afin de gnrer un certificat valide. Ce certificat nous
servira enfin gnrer, son tour, une cl dencryptions, que nous utiliserons pour crypter les donnes. La
gnration de la cl de cryptage par le certificat peut tre faite en utilisant diffrents types dalgorithmes
dencryptions.
Note : Lencryptions des donnes concerne tous les types de donnes, mis part le type FILESTREAM, qui nest pas un type
relationnel. De plus, si lencryption des donnes est dclenche sur une base de donnes, alors les sauvegardes de cette base de
donnes seront cryptes avec la mme cl de cryptage que la base. La cration des cls principales et des certificats se font toujours en
se plaant sur la base Master.

2.2 Mise en uvre


Comme nous lavons dit prcdemment, il faut dans un premier temps crer la cl principale. Nous
utiliserons le code T-SQL Suivant :
USE master
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='BlogDotnetFrance'

Nous crons ensuite le certificat de la faon suivante :

CREATE CERTIFICATE certificat


WITH SUBJECT='Blog Dotnet France'
Enfin nous crons la cl dencryptions de cette manire :

USE LaBaseaEncrypter
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=TRIPLE_DES_3KEY
ENCRYPTION BY SERVER CERTIFICATE certificat
Nous somme alors prts encrypter les donnes de notre base grce une simple instruction ALTER
DATABASE :
ALTER DATABASE LaBaseaEncrypter
SET ENCRYPTION ON

Dotnet France Association

Compression, encryption et partitionnement des donnes


Note : Le certificat, par dfaut, est perdu. Pour garder ce certificat, et par consquent, pouvoir restaurer nos bases de
donnes partir de nos sauvegardes, il va falloir faire un backup de ce certificat juste aprs lavoir cr. La restauration de nos bases de
donnes se fera de la manire suivante : cration dune master key, cration dun certificat partir du backup du certificat et
restauration de la base.

Lexcution
de
requtes
telles
que
celle-ci :
SELECT
*
FROM
sys.dm_database_encryption_keys, vous permettra de vrifier si votre base de donnes est bien
crypte en vrifiant votre tour, en fonction de lid de la base de donnes, si lencryptions state de la base est
3. Sil est 3, la base de donnes est crypte, 2, la base est en cour de cryptage et 1, la base nest pas
crypte.
Pour terminer, il est possible de rendre accessible lencryption des donnes partir de SSMS (SQL
Server Management Studio), en se rendent dans la fentre de proprit de la base de donnes crypter,
catgorie Options.

Dotnet France Association

Compression, encryption et partitionnement des donnes

3 Compression des donnes


Une des grandes forces de SQL Server rside dans la capacit de compression des donnes. Il faut savoir
que certains tests en interne, chez Microsoft, ont permis de montrer que la compression des donnes par table
et index, permet de rduire de 1,5 20 fois, la taille de nos donnes sur le disque. Lorsque la compression des
donnes est active sur une table ou un index, cette compression ne sera prise en compte qu partir de la
reconstruction de la table ou de lindex touch (ALTER TABLE nom_table REBUILD). Dans le cas de tables
partitionnes, ou dindex partitionns, la compression des donnes peut tre mise en place en fonction des
partitions de chacune des tables ou de chacun des index.
Note : La compression des donnes nest disponible que dans les versions Entreprise et Developer de SQL Server. De plus, cette
compression nest possible que pour les donnes utilisateur. Il nest en aucun cas possible de compresser les donnes dune table
systme.

3.1 Principe de compression des donnes


Concrtement, la compression des donnes permet de rduire la taille des donnes sur le support de
stockage, en donnant la possibilit de stocker plus de lignes de donnes sur un bloc de 8Ko. Si plus de ligne de
donnes sont stockes sur un bloc de 8Ko, alors moins de blocs seront utiliss, et donc les donnes occuperont
moins despace disque que dans le cas o elles ne sont pas compresses.

3.2 Mise en place


Avec du Transact-SQL, la mise en place de la compression des donnes se fait la cration (CREATE), ou
en modifiant (ALTER) une table ou un index. La seule option ajouter est loption suivante :
DATA_COMPRESSION = (NONE | ROW | PAGE) (NONE est loption par dfaut).
Avec SSMS, il existe un assistant de compression accessible de la faon suivante : Dans le menu
contextuel de la table ou de lindex, choisissez loption Stockage, puis Grer la compression.

Dans la colonne Type de compression, choisissez le type de compression utiliser (Row, Page). Il faut
savoir que le choix de compression Row, va agir au niveau des lignes de la table sur laquelle la compression
sera faite. En dautres termes, la taille de chaque ligne sera affecte. En revanche, si lon choisit loption Page,
chaque fichier de donnes sera compress. On rappelle quun fichier de donnes, constitue le fichier sur lequel

Dotnet France Association

Compression, encryption et partitionnement des donnes


sont stocke au niveau physique vos donnes. Ce fichier porte lextension .mdf dans votre systme de fichier
Windows. Lorsque ce choix est fait, il est possible de faire une estimation de la taille actuelle des donnes sur le
disque, et une estimation de la taille des donnes sur le disque aprs compression.
Note : Dans notre cas, la compression des donnes de notre table, qui ne contient que 26 lignes, ne permet pas de gagner en
espace de stockage, tout simplement parce que le volume de donnes est trop faible, pour pouvoir rduire le nombre de pages de
donnes. Compte tenu du fait que lespace disque pris par les donnes est de 16Ko, deux pages de 8Ko sont utilises. Il est alors simple
de comprendre que les donnes stockes dans 2 pages de donnes ne peuvent pas entrer dans une page de 8Ko.

Dotnet France Association

Compression, encryption et partitionnement des donnes

4 Partitionnement des donnes


Le partitionnement des donnes, comme nonc plus haut, permet, et un gain de temps dans le
retour des donnes, et une meilleure monte en charge sur le serveur, dans le cas o une multitude
de requtes est effectue par seconde sur ce mme serveur. Le partitionnement peut donc tre utile
pour la gestion des donnes, par exemple, lorsque certaines donnes peuvent tre modifies, alors
que dautres peuvent seulement tre lues. Partitionner une table revient diviser cette table en
plusieurs sous tables, pour que chacune des requtes effectues sur les donne de la table dorigine
soit plus rapide. Le partitionnement des donnes dune table permet donc doptimiser le stockage
des informations sans que le nombre de tches administratives soit augment de faon significative.
En thorie, SQL Server peut partitionner seul les donnes dune table, seulement, ce type de
partitionnement est quasiment inutile, puisquil napporte aucune valeur ajoute vos
performances. Il est donc prfrable de crer sa propre fonction de partitionnement. Pourquoi parlet-on de fonction de partitionnement ? Tout simplement parce que sans elle, SQL Server ne saurait
pas partitionner les donnes de la faon que nous voulons que ce soit fait. Vous laurez compris cette
fonction de partitionnement permet donc dindiquer comment les donnes seront partitionnes.
Techniquement, cette fonction utilise une cl de partitionnement qui va dfinir la partition utiliser
en fonction du plan de partition dfini.
Note : Il est possible de crer un index sur une table partitionne, simplement, lindex sera lui aussi
partitionn.

4.1 Crer une fonction de partitionnement


La fonction de partitionnement est donc celle qui va diriger les donnes vers lune ou lautre des
partitions. Cette fonction utilisera des plages de valeurs pour rpartir les donnes. On admet donc
que chaque plage de valeur est borne. Cette notion de borne est importante, suivant dans quelle
partition vous voudrez placer votre valeur borne. Il est important de prciser que dans la fonction de
partitionnement, nous ne prciserons que les valeurs bornes.
CREATE PARTITION FUNCTION nomdelafonction(int)
AS RANGE LEFT FOR VALUES (1000, 2000, 3000)

Dans notre cas, on cr une fonction de partitionnement de nom nomdelafonction,


laquelle nous passons en paramtre un int, le mot cl AS RANGE permet dutiliser les mots cls LEFT
ou RIGHT. Pour cet exemple, compte tenu quon utilise LEFT, chaque borne sera contenue dans la
plage de valeur infrieure. On dfinit alors avec la clause FOR VALUES les plages de valeurs
partitionner. Dans notre cas, si Xi est une plage de valeur, elles seront les suivantes :
-

X1 1000
1000 < X2 2000
2000 < X3 3000
X4 > 3000

Note : Si la valeur borne doit tre incluse dans la plage infrieure, on utilisera le mot cl LEFT, sinon, nous
utiliserons le mot cl RIGHT. De plus, pour le partitionnement par plage de donnes, SQL Server trie toujours
les donnes de la colonne cible de faon ascendante.

Dotnet France Association

Compression, encryption et partitionnement des donnes

4.2 Cration du schma de partitionnement


Prsentons rapidement le schma de partitionnement. Pour rsumer au maximum son utilit,
cest ce schma de partitionnement qui va faire le lien, entre les donnes retournes par la fonction
de partitionnement et telle ou telle partition dans laquelle sera stocke telle ou telle donne. Notons
que, bien que toutes les partitions que vous utiliserez pour partitionner vos donnes peuvent se
trouver sur le mme groupe de fichier, il est recommand de sparer chaque partition sur un groupe
de fichier diffrent, tout simplement parce que cette pratique facilite nettement ladministration et
la gestion des partitions de telle ou telle table ou index. Prsentons maintenant la syntaxe de
cration dun schma de partitionnement :
CREATE PARTITION SCHEMA nomduschema
AS PARTITION nomdelafonction
TO (premier,seconde,troisieme)

Dans ce cas l, nous crons donc un schma de partition nomm nomduschema en rapport
avec la fonction de partitionnement nomdelafonction, qui utilisera les groupes de fichier, premier,
seconde, et troisime.
Notons que lutilisation de groupes de fichiers suppose que vous sachiez comment crer des
fichiers de donnes appartenant un certain groupe. Voici la mthode suivre :
Nous allons crer trois groupes de fichiers ; premier, seconde et troisime. Rendez vous pour
cela dans les proprits de la base de donnes touche. La fentre suivante apparat :

Dotnet France Association

10

Compression, encryption et partitionnement des donnes


Cliquez alors naturellement sur ajouter, aprs vous tre rendu sur la partie Fichiers en haut
gauche de la fentre, pour ajouter un fichier de donnes, qui fera obligatoirement partie dun groupe
de fichier. Une troisime ligne apparat alors, contenant diffrentes informations :
-

Le nom logique du fichier. Ce nom sera un identifiant unique qui permettra de le reconnatre
par rapport aux autres.
Le type de fichier. Le fichier peut prendre deux types de fichiers, le type donnes, ou bien le
type journal. Le type fichier sera celui qui nous intressera cette fois-ci.
Le groupe de fichier auquel il appartient. La partie qui nous intresse le plus. En effet, lorsque
un fichier de donnes est plein, si des fichiers existent dans le groupe de fichier, et que celui
ci est vide, les donnes seront stockes sur ce fichier pour viter laccroissement anarchique
des fichiers de donnes de la base.
La taille du fichier. La taille du fichier dfinit la taille maximale que peut prendre le fichier
lorsquil est plein.
Laccroissement du fichier. Sil nexiste pas dautres fichiers dans le groupe de fichiers o lon
peut stocker les donnes, SQL Server gre un accroissement du fichier, pour viter le
manque de place dans le fichier de donnes.

Le groupe de fichiers par dfaut se nomme PRIMARY. Pour crer un nouveau groupe de fichier,
nous allons oprer ainsi. Dans la colonne groupe de fichiers, nous allons slectionner nouveau
groupe. Nous obtenons la fentre suivante :

Il vous suffit alors de lui donner un nom, et de prciser si ce fichier est en lecture seule, et sil
devient le groupe de fichier par dfaut. Cliquez alors sur OK, puis une dernire fois sur OK, dans la
fentre principale si toutefois vos oprations sont termines.

4.3 Table partitionne


Pour lutilisateur final, une table partitionne na aucun intrt puisque pour lui, cette pratique
nest pas visible. En revanche, cest un plus pour nimporte quel utilisateur. Pour partitionner une
table, il vous suffit de prciser le schma de partitionnement utiliser lors de sa cration. Voici la
syntaxe :

Dotnet France Association

11

Compression, encryption et partitionnement des donnes

CREATE TABLE matable(IdClientint)


ON nomduschema(IdClient)

Cest une syntaxe simple de cration de table, simplement, on prcise aprs la clause ON le
schma de partitionnement utilis, et en paramtre ce schma, la colonne utiliser pour calculer
les donnes partitionnes. Il est important de noter que le type de valeur donn lors de la cration
de la fonction de partitionnement, doit tre le mme que le type de la colonne passe en paramtre
au schma de partitionnement.

4.4 Indexes partitionns


Les indexes partitionns sont aussi simples crer que les tables partitionnes, puisquils
sappuient eux aussi sur des fonction de partitionnement et des schmas de partitionnement. En
revanche, il est conseill de crer un index sur une table partitionne plutt que linverse. Sachez que
la cration dun index sur une table partitionne rend celui ci partitionn de faon automatique.
Voyons maintenant la syntaxe de la cration dun index partitionn :
CREATE INDEX nomdemonindexe
ON matable(IdClient)
ON nomduschema(IdClient)

Si toutefois vous dcidez tout de mme de partitionner lindex dune table partitionne elle
mme, il est prfrable dutiliser la mme fonction et le mme schma de partitionnement que pour
le partitionnement de la table.

Dotnet France Association

12

Compression, encryption et partitionnement des donnes

5 Conclusion
Dans ce chapitre, nous avons appris trois savoirs essentiels pour un administrateur de base de
donnes. Le premier de savoir conomiser un maximum son espace disque, le second de pouvoir
toujours plus sauver lintgrit de ses donnes, et le troisime, de garantir un accs aux donnes
rapidement. Ces comptences sont possibles, dans lordre, grce la compression des donnes,
leur encryption et au partitionnement des tables et index.

Dotnet France Association

Vous aimerez peut-être aussi