{"id":11012,"date":"2018-04-01T02:00:25","date_gmt":"2018-04-01T00:00:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/"},"modified":"2018-04-01T02:00:25","modified_gmt":"2018-04-01T00:00:25","slug":"after-iot-iop-makes-its-way-to-the-database","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/","title":{"rendered":"After IoT, IoP makes its way to the database"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nAt each new Oracle version, I like to check what&#8217;s new, not only from the documentation, but also from exposed internals. I look (and sometimes diff) on catalog views definitions, undocumented parameters, and even the new C functions in the libraries. At last Oak Table World, I was intrigued by this V$SQLFN_METADATA view explained by Vit Spinka when digging into the internals of how execution plans are stored. This view has entries with all SQL functions, and a VERSION column going from &#8216;V6 Oracle&#8217; to &#8216;V11R1 Oracle&#8217;. The lastest functions has an &#8216;INVALID&#8217; entry and we also can see some functions with &#8216;SQL\/DS&#8217;. Well, now that we have Oracle 18c on the Oracle Cloud, I came back to this view to see if anything is new, listing the highest FUNC_ID at the top and the first row attired my attention:<\/p>\n<pre><code>\nSQL&gt; select * from V$SQLFN_METADATA order by 1 desc fetch first 10 rows only;\n&nbsp;\nFUNC_ID   NAME                  MINARGS   MAXARGS   DATATYPE   VERSION      ANALYTIC   AGGREGATE   OFFLOADABLE   DISP_TYPE   USAGE   DESCR                                                     CON_ID   \n-------   ----                  -------   -------   --------   ----------   --------   ---------   -----------   ---------   -----   -----                                                     ------\n     1148 TO_DOG_YEAR                   1         4 NUMERIC    V13 Oracle   NO         NO          YES           NORMAL              TO_DOG_YEAR                                                      0\n     1147 JSON_MERGEPATCH               4         0 UNKNOWN    INVALID      NO         NO          NO            NORMAL              JSON_MERGEPATCH                                                  0 \n     1146 JSON_PATCH                    4         0 UNKNOWN    INVALID      NO         NO          NO            NORMAL              JSON_PATCH                                                       0 \n     1145 ROUND_TIES_TO_EVEN            1         2 NUMERIC    INVALID      NO         NO          YES           NORMAL              ROUND_TIES_TO_EVEN                                               0 \n     1144 CON_ID_TO_CON_NAME            1         0 UNKNOWN    INVALID      NO         NO          NO            NORMAL              CON_ID_TO_CON_NAME                                               0 \n     1143 TIMESTAMP_TO_NUMBER           1         1 UNKNOWN    INVALID      NO         NO          YES           NORMAL              TIMESTAMP_TO_NUMBER                                              0 \n     1142 TO_UTC_TIMESTAMP_TZ           1         0 UNKNOWN    INVALID      NO         NO          YES           NORMAL              TO_UTC_TIMESTAMP_TZ                                              0 \n     1141 OPTSYSAPPROXRANK              1         0 UNKNOWN    INVALID      NO         NO          NO            NORMAL              Internal evaluation function for multiple approx_rank's          0 \n     1140 APPROX_RANK                   1         1 NUMERIC    INVALID      NO         YES         NO            NORMAL              APPROX_RANK                                                      0 \n     1139 APPROX_SUM                    1         2 NUMERIC    INVALID      NO         YES         NO            NORMAL              APPROX_SUM                                                       0 \n<\/code><\/pre>\n<p>Because those functions are SQL functions, I searched this &#8216;TO_DOG_YEAR&#8217; on Google to see whether a new ANSI SQL function was implemented. But finally came upon something I didn&#8217;t expect: Dog Years Calculator. The trends in databases are really going crazy these times. All focus is on developers. XML, JSON, Docker&#8230; and now a function to calculate your age in dog years.<br \/>\nBut afterall, it makes sense. IoT (not &#8216;Index Organized Table&#8217; but &#8216;Internet Of Things&#8217;) is coming with sensors everywhere. And it is not only &#8216;things&#8217; but it comes to living beings. I have <a href=\"https:\/\/community.estimote.com\/hc\/en-us\/articles\/217490107-Internet-of-Pets-it-s-not-only-about-Things-\" target=\"_blank\" rel=\"noopener noreferrer\">read recently<\/a> about &#8216;Internet of Pets&#8217; where collars equipped with sensors detect where your domestic animal go and when he is hungry. <\/p>\n<p>Let&#8217;s test it. Tomorrow, my elder kid has his 13th birthday. Now Oracle can tell me that he will be 65 in dog years:<\/p>\n<pre><code>\nSQL&gt; select to_dog_year(date'2005-04-02') from dual;\n&nbsp;\nTO_DOG_YEAR(DATE'2005-04-02')\n-----------------------------\n                           65\n<\/code><\/pre>\n<p>Yes, here I learn that the calculation is a bit more complex than just multiplying by 7. Of course, adding a SQL standard function would not make sense if it was just a multiplication. <\/p>\n<p>But it seems to be even more complex. I searched for the C functions behind this one:<\/p>\n<pre><code>\n[oracle@CLOUD18C ~]$ nm \/u01\/app\/oracle\/product\/18.0.0\/dbhome_1\/bin\/oracle | grep -iE \"dog.*year\"\n000000001452e073 r KNCLG_TODOGYEAR\n0000000003ffcf40 T LdiJDaysDogYear\n000000000f3170c0 T LdiJulianDogYear\n000000000f316fc0 T LdiJulianDogYeararr\n000000000f3170f0 t LdiJulianDogYeari\n000000000f606e10 T OCIPConvertDateDogYearTime\n000000000ebf2380 t qerxjConvertDogYearTime\n0000000010de19e0 t qjsngConvStructDogYear\n0000000010de0320 T qjsngNumberDogYearDty\n0000000010de06f0 T sageStringDogYearDty\n0000000010de7110 T sageplsDogYear\n000000000bc5cd80 t sagerwAddDogYearTime\n0000000010bad3c0 T qmxtgrConvSaxDogYear\n0000000010bad400 T qmxtgrConvSaxDogYear_internal\n00000000025ae090 T qosDateTimeDogYear\n0000000004f22b60 T xsCHDogYeartime\n000000000438c230 T nlsBreedDogYear\n000000000438bb50 t nlsBreedDogYearCmn\n000000000438c060 T nlsBreedDogYearTime\n000000000438bc50 T nlsBreedDogYear\n00000000044d1da0 T xvopAddDTDurDogYear\n00000000044d1ac0 T xvopAddYMDurDogYear\n<\/code><\/pre>\n<p>Those &#8216;nlsBreed&#8217; functions ring a bell and I checked if there are new values in V$NLS_VALID_VALUES<\/p>\n<pre><code>\nSQL&gt; select distinct parameter from V$NLS_VALID_VALUES;\n&nbsp;\nPARAMETER                                                       \n----------------------------------------------------------------\nTERRITORY\nCHARACTERSET\nBREED\nLANGUAGE\nSORT\n<\/code><\/pre>\n<p>That &#8216;BREED&#8217; is a new one, with a lot of interesting values:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CaptureBREED.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CaptureBREED.png\" alt=\"CaptureBREED\" width=\"547\" height=\"556\" class=\"aligncenter size-full wp-image-22061\" \/><\/a><\/p>\n<p>And here is my example using this new NLS parameter.<\/p>\n<pre><code>\nSQL&gt; select to_dog_year(date'2005-04-02','','NLS_BREED=Saint Bernard') from dual;\n&nbsp;\nTO_DOG_YEAR(DATE'2005-04-02',\n----------------------------\n                          96\n<\/code><\/pre>\n<p>Note that I&#8217;ve no idea about the second parameter, I had to put a &#8216;null&#8217; for it to be able to mention the NLS one, or I got a &#8216;ORA-00909: invalid number of arguments&#8217;.<\/p>\n<p>I have to say that, for a DBA focused on the core database functions, it is hard to understand that new features go on things like this TO_DOG_YEAR function. But being realistic, it is clear that the budget for new features go into the new direction: all for developers, big data, IoT&#8230; Of course we can write those functions in PL\/SQL or maybe one day with JavaScript thanks to the <a href=\"https:\/\/oracle.github.io\/oracle-db-mle\/\" target=\"_blank\" rel=\"noopener noreferrer\">Multi-Lingual Engine<\/a> currently in beta. But IoT is also about performance, and a standard function avoids context switches.<\/p>\n<h3>Added a few hours later<\/h3>\n<p>There are a lot of questions about this new function. Here are some links to go further as many people in the Oracle Community have analyzed it further:<\/p>\n<p>Martin Berger tested performance: <a href=\"http:\/\/berxblog.blogspot.ch\/2018\/04\/more-fun-with-ages.html\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/berxblog.blogspot.ch\/2018\/04\/more-fun-with-ages.html<\/a><br \/>\nPieter Van Puymbroeck realized it was offloaded in Exadata: <a href=\"http:\/\/vanpupi.stepi.net\/2018\/04\/01\/exploring-18c-exadata-functions\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/vanpupi.stepi.net\/2018\/04\/01\/exploring-18c-exadata-functions\/<\/a><br \/>\nBrendan Thierney reveald a project he worked on in beta: <a href=\"http:\/\/www.oralytics.com\/2018\/04\/predicting-ibs-in-dogs-using-oracle-18c.html\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.oralytics.com\/2018\/04\/predicting-ibs-in-dogs-using-oracle-18c.html<\/a><br \/>\n\u00d8yvind Isene provides a way to test it with a cloud discount: <a href=\"http:\/\/oisene.blogspot.ch\/2018\/04\/oracle-is-best-database-for-your-pets.html\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/oisene.blogspot.ch\/2018\/04\/oracle-is-best-database-for-your-pets.html<\/a><\/p>\n<h3>Update 2-APR-2018<\/h3>\n<p>A little update for those who didn&#8217;t realize this was posted on 1st of April. It was an April Fool common idea from some Oracle Community buddies on the post-UKOUG_TECH17 trip. And what remains true all the year is how this community is full of awesome people. And special thanks to Connor who added great ideas here \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . At each new Oracle version, I like to check what&#8217;s new, not only from the documentation, but also from exposed internals. I look (and sometimes diff) on catalog views definitions, undocumented parameters, and even the new C functions in the libraries. At last Oak Table World, I was intrigued by this [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":11014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[1317,1318],"type_dbi":[],"class_list":["post-11012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-dogs","tag-oracle-18"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>After IoT, IoP makes its way to the database - dbi 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:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"After IoT, IoP makes its way to the database\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . At each new Oracle version, I like to check what&#8217;s new, not only from the documentation, but also from exposed internals. I look (and sometimes diff) on catalog views definitions, undocumented parameters, and even the new C functions in the libraries. At last Oak Table World, I was intrigued by this [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-01T00:00:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png\" \/>\n\t<meta property=\"og:image:width\" content=\"294\" \/>\n\t<meta property=\"og:image:height\" content=\"155\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"After IoT, IoP makes its way to the database\",\"datePublished\":\"2018-04-01T00:00:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/\"},\"wordCount\":673,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/POUG.png\",\"keywords\":[\"Dogs\",\"Oracle 18\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/\",\"name\":\"After IoT, IoP makes its way to the database - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/POUG.png\",\"datePublished\":\"2018-04-01T00:00:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/POUG.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/POUG.png\",\"width\":294,\"height\":155},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/after-iot-iop-makes-its-way-to-the-database\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"After IoT, IoP makes its way to the database\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"After IoT, IoP makes its way to the database - dbi 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:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/","og_locale":"en_US","og_type":"article","og_title":"After IoT, IoP makes its way to the database","og_description":"By Franck Pachot . At each new Oracle version, I like to check what&#8217;s new, not only from the documentation, but also from exposed internals. I look (and sometimes diff) on catalog views definitions, undocumented parameters, and even the new C functions in the libraries. At last Oak Table World, I was intrigued by this [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/","og_site_name":"dbi Blog","article_published_time":"2018-04-01T00:00:25+00:00","og_image":[{"width":294,"height":155,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"After IoT, IoP makes its way to the database","datePublished":"2018-04-01T00:00:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/"},"wordCount":673,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png","keywords":["Dogs","Oracle 18"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/","url":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/","name":"After IoT, IoP makes its way to the database - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png","datePublished":"2018-04-01T00:00:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/POUG.png","width":294,"height":155},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/after-iot-iop-makes-its-way-to-the-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"After IoT, IoP makes its way to the database"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11012"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11014"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11012"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}