Michael Rys is a Principle Program Manager for SQL Server’s Query Technologies, SQL on XQuery and beyond relational data. He’s program manager for the XML features in SQL Server 2000 to 2008 such as 4XML the XML data type and XQuery and for special indexing for SQL Server 2008. He also represents Microsoft Corp in the W3 CXML Query working group and the NC SQL standardization effort. He joined Microsoft in 1998 after performing research in the areas of object RN and semi-structured databases, multi-level transaction management and distributed hetero genius information integration at Stanford University as a post stock and at the Swiss federal institute of technology in Zurich where he earned his PhD. Michael is a senior member of the SEM and a member of IEEE and has given many presentations and contributed several books on XQuery and SML databases and he blogs at SQLblog.com.
Greg Low: Introducing Show number 32 with guest Michael Rys.
Our guest today is Michael Rys. Michael is a Principle Program Manager for SQL Server’s Query Technologies, SQL on XQuery and beyond relational data. He’s program manager for the XML features in SQL Server 2000 to 2008 such as 4XML the XML data type and XQuery and for special indexing for SQL Server 2008. He also represents Microsoft Corp in the W3 CXML Query working group and the NC SQL standardization effort. He joined Microsoft in 1998 after performing research in the areas of object RN and semi-structured databases, multi-level transaction management and distributed hetero genius information integration at Stanford University as a post stock and at the Swiss federal institute of technology in Zurich where he earned his PhD. Michael is a senior member of the SEM and a member of IEEE and has given many presentations and contributed several books on XQuery and SML databases and he blogs at SQLblog.com.
Greg Low: So welcome Michael.
Michael Rys: Hi Greg, thank you for having me.
Greg Low: As I do with everyone, as I always ask, how did you come to be involved with SQL Server and Microsoft?
Michael Rys: It’s an interesting story. As you recall I have done research and received my PhD in the area of databases and database research. Decided when doing post work didn’t want to go into that area. My passion was in the area of building systems and academics. Building systems, it’s pretty hard to get recognized for that. I looked around at the Bay Area for interesting research development position in the area of management and databases. Evil empire up north that was potential for hiring me but didn’t want to move up there. Person from Microsoft came to visit at Stanford, had dinner and talked. Had an interesting project of bringing XML to the masses. With my background, wanted to see how one can utilize databases to process documents. Wanted to interview me up with his team and how to come start something that has to do with XML databases. Was hesitant, weekends with family in Seattle, meeting interesting people in Microsoft, went up and met with the guys. Had interesting discussions in the interview cycle, got an offer. Decided to relocate and join Microsoft instead of staying in the bay area. First couple months, figured out what wanted to do. Decided to join SQL Server team. XML SQL Server 2000 and it went from there.
Greg Low: That’s amazing.
Michael Rys: If you every wanted to know how I got into XML data basing that’s another story.
Greg Low: In terms of XML, main topic for today. DBA’s tend to ask, who haven’t had development background, the issue is why have XML on the database in the first place and what’s the real benefit you see from it?
Michael Rys: Couple of aspects and scenarios. XML is being used in database and data processing. XML either peripherally or inside the database. The first scenario relational data in the database want to put in information exchange. Transport form is data being sent out of the base used by XML. Send XML documents back and forth. The data to process is relational in nature. Use XML functionalities that is provided by SQL Server. Publish and decompose it back into relational data. In that context, PDA’s might encounter XML through procedures of publishing. Another scenario for XML, in database context, is XML gets used to circumvent the rather strict relational scheme that you have. Want to be able to have some kind of outlet for evolving your schema. Less costly than by changing table schema all the time. Deal with property backs. Not sure of what properties to manage.
Greg Low: Quickly explain the property bag concept? This would be more like applications and whole set of settings for an app that want to store then the whole issue is that has no meaning for the database what so ever, don’t want to have to building a schemer. Every time I change the application, not processing in the database. Just want to store those settings.
Michael Rys: Build in every product capital application. Create properly known. Have individual properties that have inside of catalog. Have a table for each item. Table for books, cameras, trousers, and corresponding properties for each one of those. Look over time; sell more new items that didn’t anticipate. By having the XML gives it the ability to have this property bag. Contains the name and value of the property in the XML form.
Greg Low: In typical relational database could imagine a number of people saying, I used to do that by having one table to rule them all. That basically had a set of descriptions or keys and set of values. Add additional flexibility compared to that model.
Michael Rys: Add to that model, more constant processing of that information. Don’t have to break, decluster the name value pairs out into the name value pair table. Can keep properties with the rest of information inside your logical row physically stored out of row. Gives the ability to move these properties around in a GAT fashion as a single unit. Don’t have to compose or decompose them. Programming model closer in the sense. Don’t have to suddenly do value base lookups. Can do task base lookups Can do more efficient look ups.
Greg Low: Might have a whole bunch of rows that relate to one row in some apparent table. Can allow keeping that sort of data together. Other useful situation where property storing isn’t a simple flat set of properties. Some nested structure properties containing properties. May or may not want to process that in the databases directly. Want some way of storing that. If want to process it. An example of doing things for electricity generation company. Wanted to store details of relays. Reason, People designing solution come up with solution that had 3000 tables. Different table for every type of relay. Someone said doesn’t look right. Interesting for representing a relay, whole bunch of standard relational properties that were there. Whole bunch of completely different types for different types of relays and different levels of nesting and different levels of things that needed to be stored there as well. Ideally want to be able to query that.
Michael Rys: In SQL Server 2005 certainly and some extent in 2008 XML Data path was appropriately for storing the information for easy get operation. Have it available for query acts to the individual properties. SQL Server 2008 add relational capabilities using sparse columns
Greg Low: Where does that overlap for new support for FAS columns? People created lots of columns few of which have data.
Michael Rys: SQL Server 2008 managing the data in SQL Server and limited by 1,024 columns
SQL Server 2008 adding support for sparse columns. Certain column called sparse storage won’t store data for no value. No values will become dense storage format. Give ability to have up to 30,000 columns in a table. Out of which 29,000 can be sparse. Most a 1,000 can be non sparse
Greg Low: Other beauty with sparse columns, ability to receive them efficiently as well.
Michael Rys: XML comes into play. Have notion for all sparse columns. XML representation using XML representation of the sparse data. In third scenario, document management scenario. XML used as document format. Office documents. XHML documents think other specific vertical domain vocabulary being expressed in XML. XPRL or other formats. Store it in the database but don‘t store it only as a blog. Want to have query access to the data inside of it. Want to run x path query’s. Find all the documents that have a certain author or certain information. Sometimes might promote that information out in relational context when load data. But sometimes might not know what a query over is. In accident reports of an insurance company. Keep the XML there and use XQuery in full text search to go against XML to find that information.
Greg Low: Blends together a number of topics. Store a good case in XML where the thing is XML in the first place. Noted that year or two back, session at tech head. Had examples of taking calculated assisted columns to take data out of a column and store it for ease of indexing. Rather than having a process of having XML in have metadata to put into different columns. Use a calculator. Extract the metadata.
Michael Rys: Main drawback run query against relational data. Run XQuery, our optimum doesn’t know.
Greg Low: Also had full text indexing enabled as well.
Michael Rys: Correct. Ability to do partial full text search over partial sub text search of the document. If DDA other reasons why interested in XML. SQL Server itself exposes lots of information using XML Format inventing information. XML representation of a show plan. Could basically capture plan in XML format and run interesting XQuery’s. Find out what’s happening in the plans.
Greg Low: Find that’s another very interesting one. DBA’s that say, or even trainers that work with teaching SQL classes. Say asked class if interested in XML, and no one is. Say look, thing is if ask people often they have no idea why interested. Role of the trainer is telling people why they might be interested. One thing to ask them is if interested in DDL figures? Oh you can do that? They respond. All of that information is sent to USXML.
Michael Rys: Correct. Bob Bushman has interesting lectures. Of tool reports and query’s people run to analyze system behavior. That SQL Server provides them with and us SQL Server to actually analyze the data.
Greg Low: Standard Events Provider in 2008, something can ask about?
Michael Rys: Not that familiar with it.
Greg Low: Pursue that another day. Bob’s been only one blogging details about it. Intrigued to follow it up and all of that comes as XML. Such a core confidence, becoming part of the database world. One question comes up; relational purists who don’t see it has a role of being stored directly like that. Interesting that there was a paper called the end of an architectural era. Michael Stone Baker and Pat Helland from Microsoft were discussing one size fits all for relational databases. Discussion is with all different types of data that was starting to put in database. Getting to point where specialized engines would be a better alternative?
Michael Rys: Very interesting philosophical debate. Don’t have the answer to that question yet. Better to have everything in one database system. Or have specialized database. Answer depends on how want to combine and mass shop the information. What type of distributed preprocess information integration kit are we going to have? If have information that want to combine. Most of business problems are not purely relational. There not purely XML. Not purely data warehousing type columns, etc. They are a mixture of all of these. Need to solve business problem. Have to combine these individual types of data in some form. Whether that integration is done by having information integration component that communicates with these individual components. Consistencies, etc. move that into a database system that happens to be very good at processing all types of information not just relational. Common data type forms, storage platforms etc. That will be seen. Interesting to note that used to have lots of specialized stores since the relational become popular. Optional databases. Native database systems Even some main member database systems. Many of those databases have found a need. Still out there and being used. But, used for small specific scenarios. Most cases the move of the relational database to add functionality covering the space to give more semantic modeling. Better XML documenting support. Think it’s not an either or. Standard applications that you see. Not either or. Probably will be evolved. Question is how big is the actual benefit to the user of keeping it separate versus one data management.
Greg Low: Maybe go through and summarize in the different versions of SQL Server what has been available in the different versions to process XML.
Michael Rys: In SQL Server 2000 added mainly functionalities that allow us to take relational data. Publish it into XML formats. Take part in these information exchange environments. Take relational data in XML form and shred it into relational form. On the database, server side has 4XML and open XML for shredding. SQL XML component used annotated scheme masks. Use similar capabilities.
Greg Low: With 4XML, quickly mention the basic format. Auto roar and explicit and quick description what they were?
Michael Rys: Select star from tables 4XML, gives one simple element for row one attributes for column values. Of relational results. The optimal mode was clever to have parent child relationship base on leniency of the information. Basically, customers and the orders. 4XML auto customer contained order space and information of the data that is being returned back. The explicit mode had limitations in terms of shape to produce with. Explicit mode rather complex. Based on the universal table approach. Gives it the ability to define arbitrary XML shapes. Define a way of specific gross set format.
Greg Low: The feedback was the explicit option was difficult.
Michael Rys: Had the nickname as query from hell. Had however lots of people putting it into production. People at Microsoft came and had 4,000 to 5,000 lines of explicit mode Queries and worked flawlessly. Maintenance for it was rather painful. In SQL Server 2005, actually could store XML documents without having to go through a relational shredding process in the database. Gave you XQuery. To query into the data there is an XML indexing mechanism that improves performance of XQuery and schema mechanism allows it to constrain the XML for inside the table to conform to a certain schema. And XQuery that can be used for optimization and semantic examples. Order buying x query expression. Order number is based and not string based.
Greg Low: Couple concepts there. One people don’t get when store XML using the XML type. It’s not a literal storage. People get surprised that when they retrieved the XML back out it’s in a canonical form. It’s not exactly literally store like they put it in there.
Michael Rys: XQuery specification, called XQuery, XPath Data Model. XML data type is a representation of such a data model. Means that certain textual representations and decoding are not being preserved. It’s preserving what some people in the industry call indefectible. Provides information that is considered to be important.
Greg Low: In 2000 there was 4XML for getting the data out, also had open XML for one way of processing the XML that came in?
Michael Rys: First did for XML and SQL Server 2005 before talking about the shredding aspect. Because XML Data type can start composing for XML Queries using sub queries. Decided it wasn’t time to get functionality for XML that made it much simpler to offer XML Shapes. We devised task modes, which is much simpler way of writing queries than the explicit mode is. Explicit mode is still there because people have written codes so we consciously move it. Couple of cases that are easier to understand, etc. Now on the shredding side in SQL Server
2,000 had an open XML. Open XML is internally using XML processor which is one of processes. Not 100% fully integrated with SQL Server Memory manager. Has scaling issues. Addressed some of them by starting with SE4 of SQL Server 2,000 and with SQL Server 2005. However, unless the performance is still needed, recommend that using the notes method and the XQuery capabilities to do the shredding.
Greg Low: XPS XPXML prepared document, had an in memory picture of tree. Use open XML to work over it. Big difference in 2005 that’s batch scoped. The prepared document.
Michael Rys: Should be set as?
Greg Low: SPXML prepared document problem was people weren’t calling removed document. Chewing up memory. More processed worse it got.
Michael Rys: SQL Server 2005 one that deviates the ability to check which are still holding memory open. Can do a trouble shooting of this behaving problem. Very useful. Recommend that call remove document that release the memory before the session.
Greg Low: Necessary calling out to an MSXML. Outside the management of SQL Server
Michael Rys: Shouldn’t use open XML on an XML Data type. XML data type will copy it out in that format.
Greg Low: Good hint took data types and used open XML. Changed the proc, take an XML parameter and it’s a really bad idea.
Michael Rys: Not a performance idea. XML data type will pass its string and need to put it back into textual format. Only do that if have encoding issues. Don’t have time to change the open XML Processing. The XML doesn’t get the process correct cause of losing fidelity. Not recommend.
Greg Low: Performance need to talk about in general. Have these query methods, also XQuery methods that have been added to the data types. Performance of those compared to the relational Queries.
Michael Rys: Relational will be faster. And it’s simpler so performance will be faster. Design queries and data in a way that they have high selectivity and they can actually perform well on it. Have given presentation at TechEd in U.S.A and Europe last year. Gave examples of how to improve the way that can get better performance back out.
Greg Low: Mention index cause of the different types.
Michael Rys: First index primary XML index. Indexes the XML index. Want to exploit the Query XML. Internal blog inside the column. Make it successful take XML and shred it into the note taker. Then operate relationally on it. Lots of query and not too many updates use primary XML index to avoid the time every time you run query. Draw back can be large. Size in pool increases. Primary XML index takes up to one point six to six times as much space as the actual XML Data.
Greg Low: Surprises XML is a certain size but primary index can be very much larger than the data itself.
Michael Rys: Didn’t mention much of that in SQL Server 2008 and can minimize that space over head.
Greg Low: Secondary indexes?
Michael Rys: Internal table. Path index properties, index and value index. Imply a little bit what they are used for. Path index speeding up queries that have high selected /A and /B. Lots of notes but only a few /A and /B. That index will help us speed that up. Property index form relational predicate. Allows it to very quickly look up the index and its value. Value index less. Do a comparison in XQuery. Value of something equals a certain value if that has high selectively on the value column. Might be better to have a value index.
Greg Low: Talk about what x query methods are available and what’s coming in 2008. Is there a life outside SQL Server?
Michael Rys: Yes there is. Even though one is sometimes surprised. I have a family at home. That takes quite a bit of time. We love to travel. Have vacation pack our bags and travel somewhere. Drive through the U.S.A and camp. Or go to a nice location and follow favorite hobby of scuba diving and photography.
Greg Low: Another scuba diver. Is the water in the Seattle area visible? The water is pretty cold so have to be wearing a dry suit. During the winter time, visibility is pretty good. When it gets warm algae bloom. Lots of interest in the critters. Very temperate stuff. There are some interesting shark species and orcas that might interact with you. Specific octopus and eels.
Greg Low: If you go scuba diving in Australia lots of nice sharks for you to look at.
Michael Rys: When I was there, no sharks visible.
Greg Low: Further south by Brisbane, there are a lot of sharks. Used to intrigue me, play in bands many years ago. And at point look outs I sat one morning and looked down over the ocean. See schools and schools of sharks. What had me intrigued were the number of people swimming 100 meters away! Where they were swimming they couldn’t see what I could see.
Michael Rys: Probably never a shark attack?
Greg Low: Well we do, sadly.
Michael Rys: I know in Melbourne where the great whites are there are attacks.
Greg Low: Bronze Whaler, they take people. In the canals around the gold coast, there are a substantial number of shark attacks there.
Michael Rys: There are Bull Sharks around here and they can be very vicious. Had a client whose life was taken and he would swim out to the islands and back. And never made it back to the land.
Greg Low: The first recorded shark attack was at Ipswich. Probably 50 or 60 kilometers up river from Brisbane. Unlikely guy who had decided to dig a swimming pool into the back of his property. And while he was doing that he was taken. Another thing in Seattle was going camping. Have some spectacular areas for doing that? The mountain areas?
Michael Rys: For hiking, I like the whole rocky areas. Then the Olympic Peninsula has some nice remote areas. Last summer was up in the Canadian parks and Glacier national, very beautiful around there. In Seattle area there are great locations and lots of nice hikes that are even good for the kids to do.
Greg Low: Back on XML, in 2005 have many XQuery methods?
Michael Rys: In SQL Server 2005 we implement XML support using an XML Data type. Found a way of associating the queries on the XML. SQL Server 2005 we expose three of our mechanisms of querying the data. And have one mechanism to do sub level updates. Let’s look at the queries. Have the ability to take the XML document and run an XQuery over it and take a new XML Document. Done using Query Method. Takes XML Data type has XQuery expression in it. Returns another XML Data type. Check if something is present inside the data type property. Find property value sets, set to a certain value. Give you a mechanism checking for the assignments. The assist method. Gives high performance in terms of checking for certain conditions in the XML Document. In structural side and certain path and value. Then the last thing is to thread data out of XML. Combine XML Data and relational data. Want to get XML Data into. Cast a XML value into a relational value and that’s the value method. Not only specified the path expression but specified the target relational type that you want to have exposed to the relational context.
Greg Low: In general in XML things tend to be springs wherever you look at them. Want to find the sale quantity and return it as some type.
Michael Rys: Yes
Greg Low: The Query Method takes XML and returns more XML. Sub sets and retrieval invoice lines out of an invoice. Used to see if a particular note exists. Extract a specific value from a node.
Michael Rys: Correct.
Greg Low: Nodes method?
Michael Rys: Ability to shred the XML document. The scenario there is two-fold. XML document used to transport multiple information to customer having orders. Have a way of mapping a single XML document containing multiple rows into one. Try relational data with XML data. Add some information to your customers and have multiple customers inside an XML document. Need to have one row that can join with a relational role. Use the notes table to map multiple XML documents into individual rows. Don’t copy put back into the notes method. Like the query method does. Puts it back into the organized document. Notes method use to combine it with the XML column or the variable using cross supply which is SQL Server
2005 mechanism apply to a table to create a new one.
Greg Low: Cross supply? Typically for every row in a table want to call a table valued function. Every customer in a customer table wants to find the most recent orders. The beauty is the nodes method is a table valued function and can use cross supply exactly same way. Nodes method. Had things like security tokens stored in XML and they have been passed into a stored procedure. Procedure processing was to apply the appropriate security. The one hesitation that talked about in the past. The estimation of row counts in those sorts of parameters.
Michael Rys: Doesn’t have a very good costing model for table value expressions. Opaque to the query processor. Doesn’t know how much rows it should estimate its results in. Apply notes method for example. Basically optimizer assumes it returns 10,000 rows.
Greg Low: I notice it gets 10,000 every time. SQL MVP Steve talked with him about it. If whole parameter is only 600 bytes it can’t possibly have 10,000 rows.
Michael Rys: Can do individual hacks. But need comprised framework for doing that. Haven’t been able to address it yet in 2008 either. The recommendation is sometimes by using queries slightly, might actually get better estimates. Put expressions sometimes into the PDF. Valued function. And will reduce the estimation slightly. My estimate is returning ten percent and the estimate is 10,000 there are only ten rows returned. Another way dealing with it. Put the data to define an XML index. Statistics available on the XML index that do much better cost estimation. Alternatively can use the table for a parameter or so. And put it into a table and find an index from that.
Greg Low: That’s great. The other thing is methods for modifying the XML. Also in conjunction on how it all fits in terms of standardization.
Michael Rys: That’s a good question. Basically add small subset of update language that allows you to do assertion. Changing of values of a node inside an existing XML document. That language has not been defined yet. Designed something that felt was making sense. Now working on an update language that will capture this and another functionality. As vacation it’s still not completed yet. Haven’t done much in SQL Server 2008 in that area. Except for one often requested improvement. Trying to see what the standard looks like before implementing it.
Greg Low: Constantly changing it. Don’t want to break people’s codes.
Michael Rys: Break people. Once already in the sense that will not be 100 percent compatible with the standards. Don’t want to break them twice.
Greg Low: Good lead in to what’s different in 2008?
Michael Rys: Done things to improve XML support. Nothing as big in 2005. Improvements are on the schema side. We have added support for max validation. Fixed some issues that people had a union of lists.
Greg Low: With the last validation that was one of the things kept hearing. Variety of schemers that just couldn’t deal with?
Michael Rys: Quite a few industry standards are in different vertical industries. Give some form of partially validated extensibility points.
Greg Low: What is the concept of Vale Validation?
Michael Rys: Means that basically identify some place within XML tree. Don’t know what people will be putting in here. Three ways of validating such an area. One is strict validation. Says that whatever people put into that open area tends to be valued according to a known price in the schema. Don’t know what type will encounter, or what elements will see. If there, it will be valid according to the schema. Supported that in SQL Server 2005. Second, skipped validated in the schema spec. Can put anything in there, don’t look at it, don’t care. Support that as well. Some applications want to have space in that open content. If know the schema want to have it validated according to the schema. Check if it’s not validated according to the schema. If don’t have a schema for it accept it. The deal with it was if it wasn’t validated at all. This hybrid mechanism didn’t support in SQL Server 2005. Added support for that in SQL Server 2008.
Greg Low: Was it mostly Office documents?
Michael Rys: Mostly that, but vertical industry as well. Found couple hundred schemas. People in different areas are using less in one form or another. Had to add support for that. So people won’t have to change schema. Another thing, in SQL Server 2005 had the limited support for time zone value. Have to provide a time zone and didn’t give round trip ability of the indicated time zone. Always normalize it to your row.
Greg Low: And didn’t have support in the relation engine either at that point.
Michael Rys: Were not very good with time in general in SQL Server. Has improved in SQL Server2008 have new types: date and time. Date and time, two and date time offset. Much richer way of dealing with date and time values, better ranges. Time zone support without time zone preservation etc. We are utilizing some of these types to provide better standard conforming time zone support to correspondingly tied schemas. Actually allow values to have time zones or no time zones. Allow values to be round trip originally provided time zone. Ending more for round trip purposes. And also have the higher resolution using new SQL types. One draw-back is upgrading from SQL Server 2005. Date and time values will have to recreate. Because it will get disabled. In the rare case that have a negative year have to change data. SQL side doesn’t support negative years. Having lots of discussions about that in the end felt that not too many people interested in negative years we hope.
Greg Low: Suppose not negative but one discussion that does come up. Support for bad type things. Is that something that’s coming up?
Michael Rys: Negative years means its BC. At the moment no we haven’t really seen many used cases. Outside some of very specific domains. They have specific solutions for that anyway which would not be easily addressed using those types.
Greg Low: Go up to the connect site and make a case for it. Suppose now is good time to be doing that.
Michael Rys: Indeed. Starting to look at what we are going to do at release after SQL Server.
Greg Low: What else are we expecting in SQL Server?
Michael Rys: Adding the XQuery expression.
Greg Low: In the queries?
Michael Rys: Exactly. Didn’t support that at the time. Now supporting it as a mechanism for naming expressions. If have same expressions refer to in the XQuery in multiple places. Not a cross query methods. Other improvement is added new XQuery functions. The upper and lower case functions. Added support in inserts statements. As a source of the insert can now refer to the SQL column or variable data type. In specific context so that people can get XML parameter and insert it into and existing item.
Greg Low: That’s great, previous thing could insert simple column types and things as part of those queries.
Michael Rys: Have to do lots of dynamic SQL of deconstruction for XML. These are some of the major changes done on the XML side. Did not get to do much in terms of improving index site. Will be investing resources in that in one of the upcoming releases.
Greg Low: Would the XML indexes be something that would lend themselves well to compression in 2008?
Michael Rys: Yes. One thing that we looked at but didn’t get a release. Whether we allow row compression or page compression. Row compression gives us a little benefit but more on the page compression. Because of the way that the data is crossed. Unfortunately that functionality is not currently being used in SQL Server 2008. Something that would make lots of people happy. Then I would allow some protests. The problem is that compression was done and finished late without being able to take non relational functionality.
Greg Low: That’s pretty much bringing us up to about time. Where will we see you this year?
I presume TechEd?
Michael Rys: It depends on my travel schedule. Currently having some launch events. Looks like will be at some launch events in Europe during March. Plan to be at TechEd in the U.S.A. this year. If lucky then can commit. Might be at another TechEd in Europe or somewhere else towards the end of the year.
Greg Low: If in Europe, March or April. PASS conference in Germany?
Michael Rys: That’s not planned at the moment.
Greg Low: Well that’s great. Thank you very much for your time today Michael.
I think we got a good interview of where that fits into the product and what to expect.
Michael Rys: You’re welcome.