You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: samples/databases/wide-world-importers/documentation/wwi-oltp-htap-sql-features.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,16 +7,16 @@ WideWorldImporters is designed to showcase many of the key features of SQL Serve
7
7
|Temporal tables|There are many temporal tables, including all look-up style reference tables and main entities such as StockItems, Customers, and Suppliers. Using temporal tables allows to conveniently keep track of the history of these entities.|
8
8
|AJAX calls for JSON|The application frequently uses AJAX calls to query these tables: Persons, Customers, Suppliers, and StockItems. The calls return JSON payloads (i.e. the data that is returned is formatted as JSON data). See, for example, the stored procedure `Website.SearchForCustomers`.|
9
9
|Row-level security (RLS)|Row Level Security (RLS) is used to limit access to the Customers table, based on role membership. Each sales territory has a role and a user. To see this in action, a script to demonstrate it has been provided.|
10
-
|Full-text indexes|Full-text indexes improve searches for People, Customers, and StockItems. The indexes are applied to queries only if you have full-text indexing installed on your SQL Server instance. A non-persistent computed column is used to create the data that is full-text indexed in the StockItems table.<br/><br/>`CONCAT` is used for concatenating the fields to create SearchData that is full-text indexed.<br/>To enable the use of full-text indexes in the sample execute the following statement in the database:<br/><br/> `EXECUTE [Application].[Configuration_ConfigureFullTextIndexing]`<br/><br/>The procedure creates a default fulltext catalog if one doesn’t already exist, then replaces the search views with full-text versions of those views).<br/><br/>Note that using full-text indexes in SQL Server requires selecting the Full-Text option during installation. Azure SQL Database does not require and specific configuration to enable full-text indexes.|
10
+
|Real-time Operational Analytics|(Full version of the database) The core transactional tables `Sales.InvoiceLines` and `Sales.OrderLines` both have a non-clustered columnstore index to support efficient execution of analytical queries in the transactional database with minimal impact on the operational workload. Running transactions and analytics in the same database is also referred to as [Hybrid Transactional/Analytical Processing (HTAP)](https://wikipedia.org/wiki/Hybrid_Transactional/Analytical_Processing_(HTAP)).|
11
11
|In-Memory OLTP|(Full version of the database) The table types are all memory-optimized, such that table-valued parameters (TVPs) all benefit from memory-optimization.<br/><br/>The two monitoring tables, `Warehouse.VehicleTemperatures` and `Warehouse.ColdRoomTemperatures`, are memory-optimized. This allows the ColdRoomTemperatures table to be populated at higher speed than a traditional disk-based table. The VehicleTemperatures table holds the JSON payload and lends itself to extension towards IoT scenarios. The VehicleTemperatures table further lends itself to scenarios involving EventHubs, Stream Analytics, and Power BI.<br/><br/>The stored procedure `Website.RecordColdRoomTemperatures` is natively compiled to further improve the performance of recording cold room temperatures.|
12
-
|Real-time Operational Analytics|(Full version of the database) The core transactional tables `Sales.InvoiceLines` and `Sales.OrderLines` both have a non-clustered columnstore index to support efficient execution of analytical queries in the operational database with minimal impact on the operational workload.|
12
+
|Clustered columnstore index|(Full version of the database) The table `Warehouse.StockItemTransactions` uses a clustered columnstore index. The number of rows in this table is expected to grow large, and the clustered columnstore index significantly reduces the on-disk size of the table, and improves query performance. The modification on this table are insert-only - there is no update/delete on this table in the online workload - and clustered columnstore index performs well for insert workloads.|
13
13
|Dynamic Data Masking|In the database schema, Data Masking has been applied to the bank details held for Suppliers, in the table `Purchasing.Suppliers`. Non-admin staff will not have access to this information.|
14
14
|Always Encrypted|The AccountNumber field uses AlwaysEncrypted. Unfortunately, at present, it cannot also use data masking.<br/><br/>A demo for Always Encrypted is included in the downloadable samples.zip. The demo creates an encryption key, a table using encryption for sensitive data, and a small sample application that inserts data into the table.|
15
15
|Stretch database|The `Warehouse.ColdRoomTemperatures` table has been implemented as a temporal table, and is memory-optimized in the Full version of the sample database. The archive table is disk-based and can be stretched to Azure.|
16
+
|Full-text indexes|Full-text indexes improve searches for People, Customers, and StockItems. The indexes are applied to queries only if you have full-text indexing installed on your SQL Server instance. A non-persistent computed column is used to create the data that is full-text indexed in the StockItems table.<br/><br/>`CONCAT` is used for concatenating the fields to create SearchData that is full-text indexed.<br/>To enable the use of full-text indexes in the sample execute the following statement in the database:<br/><br/> `EXECUTE [Application].[Configuration_ConfigureFullTextIndexing]`<br/><br/>The procedure creates a default fulltext catalog if one doesn’t already exist, then replaces the search views with full-text versions of those views).<br/><br/>Note that using full-text indexes in SQL Server requires selecting the Full-Text option during installation. Azure SQL Database does not require and specific configuration to enable full-text indexes.|
16
17
|Indexed persisted computed columns|Indexed persisted computed columns used in SupplierTransactions and CustomerTransactions.|
17
18
|Check constraints|A relatively complex check constraint is in `Sales.SpecialDeals`. This ensures that one and only one of DiscountAmount, DiscountPercentage, and UnitPrice is configured.|
18
19
|Unique constraints|A many to many construction (and unique constraints) are set up for Warehouse.StockItemStockGroups`.|
19
-
|Clustered columnstore index|(Full version of the database) The table `Warehouse.StockItemTransactions` uses a clustered columnstore index. The number of rows in this table is expected to grow large, and the clustered columnstore index significantly reduces the on-disk size of the table, and improves query performance. The modification on this table are insert-only - there is no update/delete on this table in the online workload - and clustered columnstore index performs well for insert workloads.|
20
20
|Table partitioning|(Full version of the database) The tables `Sales.CustomerTransactions` and `Purchasing.SupplierTransactions` are both partitioned by year using the partition function `PF_TransactionDate` and the partition scheme `PS_TransactionDate`. Partitioning is used to improve the manageability of large tables.|
21
21
|List processing|An example table type `Website.OrderIDList` is provided. It is used by an example procedure `Website.InvoiceCustomerOrders`. The procedure uses Common Table Expressions (CTEs), TRY/CATCH, JSON_MODIFY, XACT_ABORT, NOCOUNT, THROW, and XACT_STATE to demonstrates the ability to process a list of orders rather than just a single order, to minimize round trips from the application to the database engine.|
22
22
|GZip compression|The `Warehouse.VehicleTemperature`s table holds full sensor data but when this data is more than a few months old, it is compressed to conserve space using the COMPRESS function, which uses GZip compression.<br/><br/>The view `Website.VehicleTemperatures` uses the DECOMPRESS function when retrieving data that was previously compressed.|
0 commit comments