{"id":9233,"date":"2022-07-21T16:40:59","date_gmt":"2022-07-21T15:40:59","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=9233"},"modified":"2022-08-09T08:17:30","modified_gmt":"2022-08-09T07:17:30","slug":"sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/","title":{"rendered":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233&#038;title=SQL%20Server%202022%20%3A%20stockage%20S3%20sans%20AWS%20et%20fichiers%20Parquet\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=SQL%20Server%202022%20%3A%20stockage%20S3%20sans%20AWS%20et%20fichiers%20Parquet&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>SQL Server 2022 propose deux nouvelles fonctionnalit\u00e9s, qui combin\u00e9es, apportent un levier suppl\u00e9mentaire \u00e0 l\u2019exploitation de donn\u00e9es non traditionnelles\u00a0: la capacit\u00e9 de connexion \u00e0 du stockage compatible S3 et le support des fichiers <em>parquets<\/em> (des fichiers qui seront produits par des syst\u00e8mes externes \u00e0 SQL Server, sous la forme de fichiers plats g\u00e9rant les donn\u00e9es de mani\u00e8re verticale, structur\u00e9es et compress\u00e9es).<\/p>\n<p>Le stockage S3 peut \u00eatre, bien entendu, le service d\u2019AWS, mais dans cet article nous proposerons le d\u00e9ploiement d\u2019un stockage S3 customis\u00e9 avec le produit OpenSource \u00ab\u00a0Min.IO\u00a0\u00bb.<\/p>\n<h1>D\u00e9ployer son stockage S3 avec Min.IO\u00a0:<\/h1>\n<p>Il existe de nombreuses solutions de stockage compatible S3 \u00e0 part le service AWS. Les SAN\/NAS modernes proposent souvent un point d\u2019acc\u00e8s S3, par exemple. On peut sinon concevoir son service avec une solution logicielle.<\/p>\n<p>La solution Min.IO est\u00a0:<\/p>\n<ul>\n<li>OpenSource (GNU AGPL v3)<\/li>\n<li>Multi-plateforme (binaires disponibles pour Linux, Windows et MacOS)<\/li>\n<li>Contenerisable sous docker<\/li>\n<\/ul>\n<h2>Cadre de notre d\u00e9monstration\u00a0:<\/h2>\n<p>On va utiliser une petite VM Linux Ubuntu 20.04 prise dans Azure, avec un disque ajout\u00e9 de 512 Go.<\/p>\n<p>On consid\u00e8re ce volume disque de 512 Go comme celui qui servira \u00e0 stocker les donn\u00e9es S3, sous \/mnt\/data.<\/p>\n<p>SQL Server n\u2019accepte d\u2019\u00e9changer avec le stockage uniquement dans le cadre d\u2019\u00e9changes s\u00e9curis\u00e9s SSL. Il faut donc une paire de cl\u00e9 pour faire tourner notre service Min.IO. Pour ce PoC, on peut utiliser la solution \u00ab\u00a0Certgen\u00a0\u00bb propos\u00e9e par Min.IO pour g\u00e9n\u00e9rer des certificats auto-sign\u00e9s (<a href=\"https:\/\/github.com\/minio\/certgen\">https:\/\/github.com\/minio\/certgen<\/a> ).<\/p>\n<p>En supposant que l\u2019adresse IP de mon serveur Min.IO est 10.3.0.6, je g\u00e9n\u00e8re ma paire de cl\u00e9 avec\u00a0:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">Certgen -host\u00a0 &quot;10.3.0.6,localhost&quot;<\/pre>\n<p>Cela signifie que cela fonctionnera si le certificat est pr\u00e9sent\u00e9 par le service en tant que localhost ou bien en tant que 10.3.0.6. Si jamais on voulait utiliser la r\u00e9plication active-active de Min.IO (entre deux serveurs par exemple et que le deuxi\u00e8me serveur est sur 10.3.0.5), on peut utiliser\u00a0:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">Certgen -host\u00a0 &quot;10.3.0.6,10.3.0.5,localhost&quot;<\/pre>\n<p>Une fois la paire de cl\u00e9 g\u00e9n\u00e9r\u00e9es, il faut mettre la cl\u00e9 publique dans le magasin de certificat des composants qui s\u2019y connecteront.<\/p>\n<p>Sous Linux, en particulier dans le cas d\u2019une r\u00e9plication active-active avec un autre serveur Min.IO, en copiant la cl\u00e9 publique dans \/etc\/ssl\/certs\/ en fichier .pem\u00a0:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo cp .\/public.crt \/etc\/ssl\/My_Minio_public_key.pem<\/pre>\n<p>Sous Windows, on d\u00e9ploiera le fichier dans le magasin de certificat de l\u2019ordinateur (dans trusted root certification authorities) :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9239\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/certificat-300x175.png\" alt=\"\" width=\"1032\" height=\"602\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/certificat-300x175.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/certificat-1024x597.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/certificat-768x448.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/certificat.png 1245w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/p>\n<p>Imaginons que la paire de fichiers est dans un r\u00e9pertoire du type \/home\/minio\/certifs , on peut lancer le service tel que\u00a0:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password .\/minio server \/mnt\/data --console-address &quot;:9001&quot; --certs-dir \/home\/minio\/certifs\/<\/pre>\n<p>Ensuite, on peut se connecter avec un navigateur en https sur la console d\u2019admin\u00a0: <a href=\"https:\/\/10.3.0.6:9001\/\">https:\/\/10.3.0.6:9001\/<\/a><\/p>\n<h2>Configuration d\u2019un bucket de stockage\u00a0:<\/h2>\n<p>SQL Server a besoin d\u2019un privil\u00e8ge qui n\u2019est pas pr\u00e9sent par d\u00e9faut dans MinIO , celui de lister les objets.<\/p>\n<p>On va donc aller dans la partie \u00ab\u00a0Access\u00a0\u00bb de l\u2019interface de MinIO, et cliquer sur \u00ab\u00a0Create Policy\u00a0\u00bb.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9241\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/policy-300x199.png\" alt=\"\" width=\"840\" height=\"557\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/policy-300x199.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/policy-1024x680.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/policy-768x510.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/policy.png 1049w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Ici, on va cr\u00e9er un bucket \u00ab\u00a0sqlserver2022bucket\u00a0\u00bb\u00a0:<\/p>\n<p>La policy utilis\u00e9e ici autorise s3.ListBucket (et qui correspond au standard S3 s3.ListObjectV2 , voir documentation <a href=\"https:\/\/docs.min.io\/minio\/baremetal\/security\/minio-identity-management\/policy-based-access-control.html\">https:\/\/docs.min.io\/minio\/baremetal\/security\/minio-identity-management\/policy-based-access-control.html<\/a> ), est donc la suivante\u00a0:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n{\r\n\r\n&quot;Version&quot;: &quot;2012-10-17&quot;,\r\n\r\n&quot;Statement&quot;: [\r\n\r\n{\r\n\r\n&quot;Effect&quot;: &quot;Allow&quot;,\r\n\r\n&quot;Action&quot;: [\r\n\r\n&quot;s3:ListBucket&quot;\r\n\r\n],\r\n\r\n&quot;Resource&quot;: [\r\n\r\n&quot;arn:aws:s3:::*&quot;\r\n\r\n]\r\n\r\n}\r\n\r\n]\r\n\r\n}<\/pre>\n<p>Elle autorise le listage des objets dans n\u2019importe quel bucket. On peut affiner cela en mettant le chemin pr\u00e9cis dans la partie Resource.<\/p>\n<p>Une fois cette policy cr\u00e9e, on peut cr\u00e9er un bucket \u00ab\u00a0mybucketsqlserver\u00a0\u00bb\u00a0:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9242\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/create_bucket-300x151.png\" alt=\"\" width=\"832\" height=\"419\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/create_bucket-300x151.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/create_bucket-1024x514.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/create_bucket.png 1036w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/p>\n<p>On cr\u00e9era ensuite un dossier avec le bouton \u00ab\u00a0create new path\u00a0\u00bb.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9243\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/14-300x84.png\" alt=\"\" width=\"761\" height=\"213\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/14-300x84.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/14-1024x287.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/14-768x215.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/14.png 1072w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9244\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/16-300x107.png\" alt=\"path_2\" width=\"477\" height=\"170\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/16-300x107.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/16.png 769w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/p>\n<p>Avec le bouton upload, j\u2019ai charg\u00e9 dans le bucket trois fichiers Parquet \u00e0 titre de d\u00e9monstration. Ce sont 3 fichiers de 1000 lignes chacun.<\/p>\n<p>On va \u00e9galement cr\u00e9er un compte utilisateur pour SQL Server, appel\u00e9 \u00ab\u00a0\u00a0SQLUser\u00a0\u00bb:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9245\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/bucket4-300x203.png\" alt=\"\" width=\"566\" height=\"383\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/bucket4-300x203.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/bucket4-1024x694.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/bucket4-768x520.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/bucket4.png 1094w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/p>\n<p>On lui assignera \u00e9galement la policy \u00ab MyListObjects \u00bb.<\/p>\n<p>&nbsp;<\/p>\n<h2>Configuration c\u00f4t\u00e9 SQL Server\u00a0:<\/h2>\n<p>L\u2019acc\u00e8s \u00e0 des donn\u00e9es depuis un stockage compatible S3 passe l\u2019utilisation du composant Polybase. Apr\u00e8s l\u2019avoir install\u00e9, on l\u2019active par\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">exec sp_configure @configname = 'polybase enabled', @configvalue = 1 ;\r\n\r\nRECONFIGURE ;\r\n\r\nexec sp_configure @configname = 'polybase enabled' ; <\/pre>\n<p>&nbsp;<\/p>\n<p>On doit ensuite cr\u00e9er un credential qui sera celui utilis\u00e9 pour se connecter au stockage S3\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">CREATE DATABASE SCOPED CREDENTIAL My_S3_Credential\r\n\r\nWITH IDENTITY = 'S3 Access Key',\r\n\r\nSECRET = 'sqluser:sqluser' ; <\/pre>\n<pre><\/pre>\n<p>On cr\u00e9er ensuite une source de donn\u00e9es externe correspondant \u00e0 notre service S3\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\n\r\nCREATE EXTERNAL DATA SOURCE my_own_S3_DC\r\n\r\nWITH (LOCATION = 's3:\/\/10.3.0.6\u00a0:9000\/',\u00a0\u00a0 CREDENTIAL = My_S3_Credential);\r\n\r\nGO <\/pre>\n<p>Apr\u00e8s, on d\u00e9clare un format de fichier parquet\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">CREATE EXTERNAL FILE FORMAT [SampleParquetFileFormat] WITH (FORMAT_TYPE = PARQUET)\r\n\r\nGO <\/pre>\n<h2>Interrogation et manipulation d\u2019un fichier Parquet\u00a0:<\/h2>\n<p>Il y a deux m\u00e9thodes pour les interroger\u00a0:<\/p>\n<ul>\n<li>OPENROWSET()<\/li>\n<li>CREATE EXTERNAL TABLE<\/li>\n<\/ul>\n<h3><u>Avec OPENROWSET()\u00a0:<\/u><\/h3>\n<p>Cette technique a l\u2019avantage de ne pas forc\u00e9ment n\u00e9cessiter de connaitre le mod\u00e8le de donn\u00e9es des fichiers. Par exemple\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\n\r\nSELECT\u00a0 *\u00a0 FROM\u00a0\u00a0\u00a0 OPENROWSET\r\n\r\n(\u00a0\u00a0 BULK '\/mybucketsqlserver\/parquetfiles'\r\n\r\n,\u00a0\u00a0 FORMAT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 'PARQUET'\r\n\r\n,\u00a0\u00a0 DATA_SOURCE\u00a0 = 'my_own_S3_DC'\r\n\r\n) AS [cc];\r\n\r\n<\/pre>\n<p>Nous renvoi\u00a0:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9247\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/reslt2-300x94.png\" alt=\"\" width=\"728\" height=\"228\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/reslt2-300x94.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/reslt2-768x240.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/reslt2.png 945w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Les 3 fichiers Parquets ont \u00e9t\u00e9 lus et le jeu de r\u00e9sultat est concat\u00e9n\u00e9 : on a bien 3000 lignes.<\/p>\n<p>L\u2019inconv\u00e9nient de cette m\u00e9thode est l\u2019incapacit\u00e9 \u00e0 \u00e9tablir une requ\u00eate. On utilisera plut\u00f4t cette m\u00e9thode pour faire un import massif de donn\u00e9es dans une table locale.<\/p>\n<h3><u>Avec CREATE EXTERNAL TABLE\u00a0: <\/u><\/h3>\n<p>On va donc cr\u00e9er une table soit parce qu\u2019on connait le mod\u00e8le de donn\u00e9es, soit parce qu\u2019on a fait un SELECT INTO depuis un OPENROWSET et obtenu le mod\u00e8le de donn\u00e9es\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">CREATE EXTERNAL TABLE [dbo].[t_parquet_files]\r\n\r\n(\r\n\r\n[id] [int] NULL,\r\n\r\n[first_name] [varchar](50) NULL,\r\n\r\n[last_name] [varchar](50) NULL,\r\n\r\n[email] [varchar](200) NULL,\r\n\r\n[gender] [varchar](20) NULL,\r\n\r\n[ip_address] [varchar](32) NULL,\r\n\r\n[cc] [varchar](200) NULL,\r\n\r\n[country] [varchar](200) NULL,\r\n\r\n[birthdate] [varchar](200) NULL,\r\n\r\n[salary] [float] NULL,\r\n\r\n[title] [varchar](200) NULL,\r\n\r\n[comments] [varchar](2000) NULL\r\n\r\n)\r\nWITH (DATA_SOURCE = my_own_S3_DC,LOCATION = N'\/mybucketsqlserver\/parquetfiles',FILE_FORMAT = [SampleParquetFileFormat],REJECT_TYPE = VALUE,REJECT_VALUE = 0)\r\n\r\nGO <\/pre>\n<p>&nbsp;<\/p>\n<p>On peut ensuite interroger la table externe comme n\u2019importe quelle table\u00a0:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\"> select * from [t_parquet_files]\r\n\r\nwhere gender = 'male' <\/pre>\n<p>Il devient int\u00e9ressant de regarder le plan d\u2019ex\u00e9cution\u00a0:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9248\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/2-300x103.png\" alt=\"\" width=\"626\" height=\"215\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/2-300x103.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/2.png 581w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/p>\n<pre><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-9249\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4-298x300.png\" alt=\"plan_exec3\" width=\"298\" height=\"300\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4-298x300.png 298w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4-150x150.png 150w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4-144x144.png 144w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4-50x50.png 50w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/4.png 545w\" sizes=\"auto, (max-width: 298px) 100vw, 298px\" \/><\/pre>\n<p>&nbsp;<\/p>\n<p>On observe deux choses\u00a0: tout d\u2019abord SQL Server a \u00e9t\u00e9 capable de produire une estimation correcte du nombre de lignes de plusieurs fichiers Parquets. Ensuite l\u2019application d\u2019un pr\u00e9dicat sur une colonne a renvoy\u00e9 une estimation \u00e9galement correcte (il y a 1371 lignes plus pr\u00e9cis\u00e9ment).<\/p>\n<p>Vous allez peut-\u00eatre penser que c\u2019est une requ\u00eate un peu simpliste pour se rassurer sur les estimations\u00a0?<\/p>\n<p>Deux tests de fonctions d\u2019agr\u00e9gation\u00a0:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">select count(*), gender\r\n\r\nfrom t_parquet_files\r\n\r\nGroup BY gender <\/pre>\n<p>3 valeurs possibles pour la colonne gender\u00a0: l\u2019estimation est bonne.<\/p>\n<pre><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9250\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/6-300x99.png\" alt=\"\" width=\"639\" height=\"211\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/6-300x99.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/6.png 603w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">select count(*), country\r\n\r\nfrom t_parquet_files\r\n\r\nGroup BY country <\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9251\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/8-300x90.png\" alt=\"\" width=\"527\" height=\"158\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/8-300x90.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/8.png 591w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><br \/>\n181 valeurs possibles dans la colonne country\u00a0: l\u2019estimation est \u00e9galement bonne.<\/p>\n<p>&nbsp;<\/p>\n<p>En conclusion, l\u2019\u00e9largissement de SQL Server, \u00e0 travers Polybase, vers le stockage S3 et les fichiers Parquets, offre de nouvelles possibilit\u00e9s de traitement analytiques toujours plus grands.<\/p>\n<p>Ce n\u2019est pas juste un flux de donn\u00e9es depuis un fichier plat, mais une vraie capacit\u00e9 de lecture intelligente des donn\u00e9es gr\u00e2ce \u00e0 des estimations de cardinalit\u00e9s, promettant des performances \u00e9lev\u00e9es.<\/p>\n<p>&nbsp;<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233&#038;title=SQL%20Server%202022%20%3A%20stockage%20S3%20sans%20AWS%20et%20fichiers%20Parquet\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=SQL%20Server%202022%20%3A%20stockage%20S3%20sans%20AWS%20et%20fichiers%20Parquet&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F9233\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>SQL Server 2022 propose deux nouvelles fonctionnalit\u00e9s, qui combin\u00e9es, apportent un levier suppl\u00e9mentaire \u00e0 l\u2019exploitation de donn\u00e9es non traditionnelles\u00a0: la capacit\u00e9 de connexion \u00e0 du stockage compatible S3 et le support des fichiers parquets (des fichiers qui seront produits par&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9254,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[295,5],"tags":[414,415,418,417,412,413,423,416,408,411,410],"class_list":["post-9233","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","category-sqlserver","tag-apache-parquet","tag-big-data","tag-min-io","tag-minio","tag-parquet","tag-parquet-file","tag-polybase","tag-s3","tag-sql-server-2022","tag-sql2022","tag-sqlserver2022"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"SQL Server 2022 propose deux nouvelles fonctionnalit\u00e9s, qui combin\u00e9es, apportent un levier suppl\u00e9mentaire \u00e0 l\u2019exploitation de donn\u00e9es non traditionnelles\u00a0: la capacit\u00e9 de connexion \u00e0 du stockage compatible S3 et le support des fichiers parquets (des fichiers qui seront produits par&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-21T15:40:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-09T07:17:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/parquet-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Capdata team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Capdata team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\"},\"author\":{\"name\":\"Capdata team\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\"},\"headline\":\"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet\",\"datePublished\":\"2022-07-21T15:40:59+00:00\",\"dateModified\":\"2022-08-09T07:17:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\"},\"wordCount\":1321,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"Apache Parquet\",\"big data\",\"min.IO\",\"MinIO\",\"parquet\",\"parquet file\",\"polybase\",\"S3\",\"SQL Server 2022\",\"SQL2022\",\"sqlserver2022\"],\"articleSection\":[\"AWS\",\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\",\"name\":\"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2022-07-21T15:40:59+00:00\",\"dateModified\":\"2022-08-09T07:17:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\",\"name\":\"Capdata team\",\"sameAs\":[\"https:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/","og_locale":"fr_FR","og_type":"article","og_title":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG","og_description":"SQL Server 2022 propose deux nouvelles fonctionnalit\u00e9s, qui combin\u00e9es, apportent un levier suppl\u00e9mentaire \u00e0 l\u2019exploitation de donn\u00e9es non traditionnelles\u00a0: la capacit\u00e9 de connexion \u00e0 du stockage compatible S3 et le support des fichiers parquets (des fichiers qui seront produits par&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2022-07-21T15:40:59+00:00","article_modified_time":"2022-08-09T07:17:30+00:00","og_image":[{"width":600,"height":400,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/07\/parquet-logo.png","type":"image\/png"}],"author":"Capdata team","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Capdata team","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/"},"author":{"name":"Capdata team","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9"},"headline":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet","datePublished":"2022-07-21T15:40:59+00:00","dateModified":"2022-08-09T07:17:30+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/"},"wordCount":1321,"commentCount":2,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["Apache Parquet","big data","min.IO","MinIO","parquet","parquet file","polybase","S3","SQL Server 2022","SQL2022","sqlserver2022"],"articleSection":["AWS","SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/","url":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/","name":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2022-07-21T15:40:59+00:00","dateModified":"2022-08-09T07:17:30+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/sql-server-2022-stockage-s3-sans-aws-et-fichiers-parquet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2022 : stockage S3 sans AWS et fichiers Parquet"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9","name":"Capdata team","sameAs":["https:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=9233"}],"version-history":[{"count":12,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9233\/revisions"}],"predecessor-version":[{"id":9283,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/9233\/revisions\/9283"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/9254"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=9233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=9233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=9233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}