Is AI Going to Dumb Down the Internet?

Full disclosure, I am a layperson when it comes to search engine optimization (SEO). I have been doing some research to optimize the content on our budaconsulting.com website, and something caught my eye that concerns me. I wanted to mention it and see if readers have any thoughts about it. 

Implications of the new Mobile First Index

While researching the latest SEO topics, I came across this informative article on mobile-first indexing, appearing in Search Engine Journal.com, by Roger Montti.  

The article describes how Google’s new mobile-first index changes the way content relevance is derived. Most of that discussion is beyond the scope of this article, but it is all very interesting and worth a read. 

What interested me most was part 6, which talked about whether a user would understand your content.  This describes how machine learning is used to interpret click-through rates and viewport times (the amount of time content remains visible on a mobile screen or in a browser).

As with other signals used by the search engine’s algorithm, this is used to determine where in the search results, if at all,  your page shows up. The author references a Microsoft paper entitled “Predicting Interesting Things in Text.”

I won’t repeat the text here, but Roger Montti posits that one of his takeaways from this paper is, “It may be advantageous to appeal to the broadest array of people in a mobile-first index.” 

Dumbing down our content

I am not sure, but it sounds like that may mean that in order to get our pages to appear to the readers we want, we have to make it understandable (according to the AI) to the general public. 

When we write technical blogs, in order to make them understandable to everyone, we would have to leave out all manner of technical detail. We would also have to avoid going deep into the topic at a conceptual level.

 I am interested in the thoughts of SEO professionals about this. Do you think that we will start to see more shallow content on the internet in general in order to chase page ranking? It seems that the internet would lose much if its value pretty quickly if that becomes the only way to get page rankings.

 

Database Patch News — May 2020 (Issue 3)

Database Patch News — May 2020 (Issue 3)

Welcome to Database Patch News, Buda Consulting’s newsletter of current patch information for Oracle and Microsoft SQL Server. Here you’ll find information on available patches—including security patches—and desupported versions recently made available.

Why should you care about patching vulnerabilities and bugs? Two big reasons:

    1. Unpatched systems are a top cyber attack target. Patch releases literally advertise vulnerabilities to the hacker community. The longer you wait to patch, the greater your security risk. 
    2. Along with running a supported database version, applying the latest patches ensures that you can get support from the vendor in case of an issue. Patching also helps eliminate downtime and lost productivity associated with bugs. 

Here are the latest patch updates for Oracle and SQL Server:

Oracle Patches:

Apr 14 2020 Quarterly Patch Updates:

19c – Release Update 19.7 available

18c – Release Update 18.10 available

12.2.0.1 –  APR 2020 Release Update 12.2.0.1.200414 available
Regular support ends Mar 2023 and extended support ends Mar 2026.

12.1.0.2 – Currently in extended support.
The last freely available patch was July 2019 for 12.1.0.2.

Apr 14 2020 PSU available but may require extended support purchase to access it. 

Patches will be released until July 2021 for this version. 

PATCH SET UPDATE 12.1.0.2.200414 available

11.2.0.4 – Entered extended support December of 2017

Last free available patch was October 2018 for 11.2.0.4.

PATCH SET UPDATE 11.2.0.4.200414 available but may require clients purchase extended support to have access to it.

SQL Server Patches:

SQL Server 2019

Cumulative update 3 (Latest build) Released March 12, 2020

Mainstream support ends Jan 7, 2025

Extended support ends Jan 8, 2030


SQL Server 2017

Cumulative update 20 (Latest build) Released Apr 7, 2020

Mainstream support ends Oct 11, 2022

Extended support ends Oct 12, 2027


SQL Server 2016 Service Pack 2

Cumulative update 12 Release date: Feb 25, 2020

Mainstream support ends Jul 13, 2021

Extended support ends Jul 14, 2026


SQL Server 2014 Service Pack 3

Cumulative update 3 Release date: Apr 16, 2019

Mainstream support ended Jul 9, 2019

Extended support ends Jul 9, 2024


SQL Server 2012 Service Pack 4

Release date: Oct 5, 2017

Mainstream support ended Jul 11, 2017

Extended support ends Jul 12, 2022

Note: All other SQL Server versions not mentioned are no longer supported.

 

Schemas, Databases and Instances—Defined and Discussed

What is a schema as opposed to a database as opposed to an instance? And how do schemas differ between Oracle and MSSQL? Or between Oracle and PostgreSQL? Or between PostgreSQL and MongoDB?

These terms can be confusing, but they are very important when planning a database architecture. So let’s define these terms and discuss conceptually how they are similar and how they differ between database software implementations. This post will focus mostly on schemas, with some references to the other terms for context. 


What is a database ?

A database is the collection of database files that contain the data being stored. These files hold both the user data and the metadata (data dictionary) that the database needs to make sense of the user data.  The metadata includes the schema definitions (where applicable) as described below.


What is a database instance?

A database instance is the collection of all of the database software processes plus any memory structures required by those processes, plus the database files where the database data is stored. (See diagram)

The different software vendors treat the relationship between databases and instances in different ways.

Oracle supports one database per instance unless you are working with 12c and above and using Oracle Multitenant.

PostgreSQL supports multiple databases per instance.  Some system catalogs are shared across all databases in an instance.

MSSQL supports multiple databases per instance. Each instance has a set of system databases that are shared across all databases served by that instance. 

MongoDB supports multiple databases per instance.


What is a schema?  

The concept of a schema can be a little confusing because there are three different relevant uses of the word “schema” in the context of an IT project. 

    1. Mirriam Webster defines a schema as “a structured framework or plan, an outline.”  
    2. In the realm of database technology, a schema means a structural definition of the data that you are storing. This essentially defines the datatypes of the data you are storing, and the organization of that data (into tables, documents, indexes and constraints, etc). This can be expressed in the form of a diagram such as an entity relationship diagram (ERD), or in a set of data dictionary language (DDL) statements, or in a JSON object. 
    3. Some database vendors have extended the concept of a schema to include not just a definition of the structure of a set of data, but also a particular collection of objects that contain the data (tables, etc), and even the data itself. This is sometimes a named collection and is typically based on one of these factors: 
      • Who owns the objects (a database user)
      • Who should have access to the objects (e.g., a database role that may be assigned to users)
      • What the objects are used for (e.g., all objects for a given application or function within an application)   

When implemented in this fashion, a schema can also be thought of as a namespace. An object can have the same name in two different schemas and the two objects will be distinct from each other. 

It is interesting to note that MongoDB, which is a document database as opposed to a relational database, is sometimes called a schema-less database. MongoDB also has the concept of a schema, but it is purely a description of the structure of the data, more like definition 2 above than 3. A MongoDB schema does not represent the actual instance of the data, as it does with the relational databases mentioned. 

To summarize, within the context of database management software, a schema is either a set of objects that contain data that is related in some logical way (user, access, application), or simply a definition of the structure of data. 

Examples

Here are some example of schemas (see the diagram below):

    1. Schema JSMITH:  A schema that contains all of the tables that belong to user Jsmith. This schema would typically simply be named the same as the user, and is often created automatically when that database user account is created. When the user connects to the database, this will typically be his default schema. So any objects that he creates will automatically be part of that schema. When he issues a query, unless he specifies a schema name as part of the name of the object he is querying, or changes his schema search path (this is done differently by each database vendor),  the result set will come from the object by that name that exists in his default schema. 
    2. Schema PAYROLL: A schema that contains all of the tables for the payroll application. This schema would typically be named for the application or a functional area within the application. When accessing data from the Payroll schema, users will need to either set their schema search path to the Payroll schema, or prefix all object names in the query with PAYROLL.
    3. Schema DBO: This built-in schema in MSSQL is the default for all users unless otherwise specified. In many SQL Server databases, almost all objects end up here.  This is similar to the public schema in PosgtreSQL.


How does a schema differ between database vendors? 

MSSQL and PostgreSQL have an actual object in the database called a schema. You can create and drop a schema, and you can assign access rights and ownership to a schema as a whole. In these environments, there is a loose connection between a schema and a database user. A schema may be owned by a database user. But a database user does not have to own any schemas. A schema may also be owned by a role instead of an individual user. If you want to drop a user that owns a schema, they can and must first transfer ownership of the schema to another user. 

Oracle has the concept of a schema but it does not really have an object in the database called a schema. It is more conceptual. In Oracle, each database user may be an owner of objects, and the collection of objects owned by a given user is considered a schema. If a database user is dropped, all objects owned by that user (in that user’s schema) must be dropped first. A schema in Oracle does not exist independently of a database user. There is a command in Oracle called Create Schema that is essentially a wrapper that lets you create a database user and a set of objects to be owned by that user all at once.  The Drop Schema command is really the same thing as Drop User. One cannot transfer ownership of an object from one user to another. The new user would need to recreate the object. (A CTAS query may be helpful here).

MongoDB, as mentioned earlier, uses the concept of a schema in database design and in the validation of the structure of incoming data. (Nice blog on this here.) But there is no object in the database known as a schema. 

I hope this post helps pull together the concept of a schema and the way the different vendors have implemented schemas.

Please comment with any questions or examples that you think might be helpful, including for database vendors that are not listed here. Also, if you disagree with the way I defined schema, please let me know how you see it.

To talk over any questions you may have around schemas or database architecture in general, contact Buda Consulting.

Which Edition of Oracle RDBMS is Right for My Business?

Which Edition of Oracle RDBMS is Right for My Business?

Do I really need Oracle Enterprise Edition? Do I need Oracle Enterprise Edition in order to have a standby database? What version of Oracle do I need?  

We get questions like these a lot. Oracle’s editions and features can be a bit overwhelming. This post shares some key information that I hope will make your choice easier.

To keep this post to a manageable length, this post deals only with Oracle Version 12c and Version 19c, and excludes Oracle cloud offerings. A future post will cover those feature sets. 

Oracle Standard Vs. Enterprise

For each version covered below, I took the feature set from Oracle’s licensing documentation and listed those things that are available only in the Enterprise Edition of Oracle, and not in any of the Standard Editions.

But before we look at the specific features available in each version, let’s explore two important categories of features:

Data Guard

One of the more frequently used options in Enterprise Edition is Data Guard. A set of Data Guard features is listed in the first table for each edition below. These are used to implement high availability; that is, having a standby database available that is kept up to date with your primary production database in case your primary database goes down.

If Data Guard related features are the only set of “Enterprise-only” features that you need, then you may still be able to use Oracle’s Standard Edition. Here’s why:

DBvisit Standby, an alternative to Oracle’s Data Guard, provides an active standby database using any version of Oracle. You will still need to license the database software on both the primary and the standby server, but both can be much less expensive Standard Edition licenses. 

Oracle Security

Oracle has a number of important security options. 

The advanced security option is an extra cost option that is only available with Enterprise Edition.  This includes transparent data encryption, data redaction, data masking and subsetting (very helpful for development environments), and other security options. To adequately secure sensitive data at the database level, we advise that you use advanced security, and thus Oracle Enterprise Edition. 

With that said, if you are not using advanced security, and the only Enterprise-only option you need is Data Guard, then we recommend taking a good look at Dbvisit.

Oracle Version 12c Features

Below are the features that are only available in Enterprise Edition for Oracle 12c. If you need anything on this list, then you need Oracle Enterprise Edition. Period! 

Category Feature
Data Warehousing and Business Intelligence Advanced Index Compression
Data Warehousing and Business Intelligence Automatic Data Optimization
Data Warehousing and Business Intelligence Basic Table Compression
Data Warehousing and Business Intelligence Bitmapped index, bitmapped join index, and bitmap plan conversions
Data Warehousing and Business Intelligence Deferred Segment Creation
Data Warehousing and Business Intelligence Exadata Flash Cache Compression
Data Warehousing and Business Intelligence Heat Map
Data Warehousing and Business Intelligence Hybrid Columnar Compression
Data Warehousing and Business Intelligence Hybrid Columnar Compression Row-Level Locking
Data Warehousing and Business Intelligence In-memory Parallel Execution
Data Warehousing and Business Intelligence Oracle Advanced Compression
Data Warehousing and Business Intelligence Oracle OLAP
Data Warehousing and Business Intelligence Oracle Partitioning
Data Warehousing and Business Intelligence Parallel capture and apply via XStream
Data Warehousing and Business Intelligence Parallel Data Pump Export/Import
Data Warehousing and Business Intelligence Parallel index build/scans
Data Warehousing and Business Intelligence Parallel query/DML
Data Warehousing and Business Intelligence Parallel Statement Queuing
Data Warehousing and Business Intelligence Parallel statistics gathering
Data Warehousing and Business Intelligence Prefix Compression (also called Key Compression)
Data Warehousing and Business Intelligence Summary management—Materialized View Query Rewrite
Data Warehousing and Business Intelligence Transportable tablespaces, including cross-platform and full transportable export and import
High Availability Application Continuity
High Availability Automatic Block Repair
High Availability Block change tracking for fast incremental backup
High Availability Block-level media recovery
High Availability Cross-platform Backup and Recovery
High Availability Duplexed backup sets
High Availability Fast-start fault recovery
High Availability Flashback Database
High Availability Flashback Table
High Availability Flashback Transaction
High Availability Flashback Transaction Query
High Availability Global Data Services
High Availability Lost Write Protection
High Availability Online Datafile Move
High Availability Online index rebuild
High Availability Online index-organized table organization
High Availability Online table redefinition
High Availability Oracle Active Data Guard
High Availability Oracle Data Guard—Far Sync Standby
High Availability Oracle Data Guard—Real-Time Cascading Standbys
High Availability Oracle Data Guard—Redo Apply
High Availability Oracle Data Guard—Snapshot Standby
High Availability Oracle Data Guard—SQL Apply
High Availability Parallel backup and recovery
High Availability Recovering tables and table partitions from RMAN backups
High Availability Rolling Upgrade Using Active Data Guard
High Availability Rolling Upgrades—Patch Set, Database, and Operating System
High Availability Tablespace point-in-time recovery
High Availability Transaction Guard
High Availability Trial recovery
High Availability Unused block compression in backups
Integration Advanced Replication
Integration Messaging Gateway
Integration Sharded Queues
Manageability Database Resource Manager
Manageability Oracle Cloud Management Pack for Oracle Database
Manageability Oracle Data Masking and Subsetting Pack
Manageability Oracle Database Lifecycle Management Pack for Oracle Database
Manageability Oracle Diagnostics Pack
Manageability Oracle Fleet Patching and Provisioning

(formerly Rapid Home Provisioning)

Manageability Oracle Real Application Testing
Manageability Oracle Tuning Pack
Manageability SQL Plan Management
Manageability SQL Tuning Sets
Networking Infiniband Support
Networking Network Compression
Networking Oracle Connection Manager
Performance Adaptive Execution Plans
Performance Attribute Clustering
Performance Client Side Query Cache
Performance Concurrent Execution of UNION and UNION ALL Branches
Performance Database Smart Flash Cache
Performance Fault Tolerant In-Memory Column Store
Performance In-Memory Aggregation
Performance In-Memory Column Store
Performance PL/SQL Function Result Cache
Performance Query Results Cache
Performance Support for Oracle Exadata Storage Server Software
Performance TimesTen Application-Tier Database Cache
Performance Zone Maps
Scalability Oracle NoSQL Database Basic Edition
Scalability Quality of Service Management
Security Enterprise User Security
Security Fine-grained Auditing
Security Oracle Advanced Security
Security Oracle Database Vault
Security Oracle Label Security
Security Privilege Analysis
Security Real Application Security
Security Redaction
Security Transparent Sensitive Data Protection
Security Virtual Private Database
Snapshots and Cloning Storage Snapshot Optimization
Spacial Multimaster replication of SDO_GEOMETRY objects
Spacial Parallel spatial index builds
Spacial Partitioned spatial indexes

Now we’ll look at features that are only available in certain versions of Oracle 12c Standard Edition, or that are limited in Standard Edition. The “Notes” column explains the limitations.

Category Feature SE1 SE/SE2 EE Notes
Data Warehousing and Business Intelligence Oracle Machine Learning (formerly Advanced Analytics) N Y N Included with SE2 and EE

Not included with SE1 and SE

OML4R (Oracle R Enterprise) Server is limited to operation on Oracle Linux 6 or higher

High Availability Optimization for Flashback Data Archive N Y N Basic Flashback Data Archive is in all editions. Optimization for Flashback Data Archive requires EE and the Oracle Advanced Compression option.
Integration Basic Replication Y Y N SE/SE1/SE2: read-only, updateable materialized view
Integration Oracle Streams Y Y N SE/SE1/SE2: no capture from redo
Manageability Instance Caging N Y N Included with SE2 and EE

Not included with SE1 and SE

Spacial Oracle Spatial N Y N Included with SE2 and EE

Not included with SE1 and SE

Spacial RDF Graph N Y N Included with SE2 and EE

Not included with SE1 and SE

If you need any of the above features, then you may need Oracle Enterprise Edition, depending on the specifics as listed in the notes.

That’s it!

Your DBA team should be able to tell you if you need/use these Enterprise-only features. 

If you don’t need any of these features, then potentially you can save many thousands of dollars by using the Standard Edition instead. 

Oracle version 19c Features

OK, that’s it for 12c. Oracle 19c is essentially the same but with a somewhat different, more “evolved” set of options. The considerations mentioned above remain valid. 

First, let’s look at the 19c features that definitely require Enterprise Edition:

Category Feature
High Availability Application Continuity
High Availability Oracle Sharding
High Availability Oracle RAC One Node
High Availability Oracle Data Guard—Redo Apply
High Availability Oracle Data Guard—Far Sync Standby
High Availability Oracle Data Guard—SQL Apply
High Availability Oracle Data Guard—Snapshot Standby
High Availability Oracle Data Guard—Real-Time Cascading Standbys
High Availability Oracle Active Data Guard
High Availability Rolling Upgrades—Patch Set, Database, and Operating System
High Availability Rolling Upgrade Using Active Data Guard
High Availability Online index rebuild
High Availability Online table organization
High Availability Online table redefinition
High Availability Duplexed backup sets
High Availability Block change tracking for fast incremental backup
High Availability Unused block compression in backups
High Availability Block-level media recovery
High Availability Lost Write Protection
High Availability Automatic Block Repair
High Availability Parallel backup and recovery
High Availability Tablespace point-in-time recovery
High Availability Trial recovery
High Availability Fast-start fault recovery
High Availability Flashback Table
High Availability Flashback Database
High Availability Flashback Transaction
High Availability Flashback Transaction Query
High Availability Optimization for Flashback Data Archive
High Availability Online Datafile Move
High Availability Transaction Guard
High Availability Cross-platform Backup and Recovery
High Availability Global Data Services
High Availability Recovering tables and table partitions from RMAN backups
Integration Messaging Gateway
Integration Sharded Queues
Manageability Oracle Cloud Management Pack for Oracle Database
Manageability Oracle Data Masking and Subsetting Pack
Manageability Oracle Database Lifecycle Management Pack for Oracle Database
Manageability Oracle Diagnostics Pack
Manageability Oracle Tuning Pack
Manageability Oracle Real Application Testing
Manageability Database Resource Manager
Manageability SQL Tuning Sets
Manageability Oracle Fleet Patching and Provisioning (formerly Rapid Home Provisioning)
Networking Infiniband Support
Networking Oracle Connection Manager
Networking Network Compression
Performance Client Side Query Cache
Performance Query Results Cache
Performance PL/SQL Function Result Cache
Performance Oracle TimesTen Application-Tier Database Cache
Performance Database Smart Flash Cache
Performance Adaptive Execution Plans
Performance Concurrent Execution of UNION and UNION ALL Branches
Performance Oracle Database In-Memory
Performance In-Memory Column Store
Performance In-Memory Aggregation
Performance Attribute Clustering
Scalability Oracle Real Application Clusters (Oracle RAC)
Scalability Oracle NoSQL Database Basic Edition
Security Column-Level Encryption
Security Tablespace Encryption
Security Oracle Advanced Security
Security Oracle Database Vault
Security Oracle Label Security
Security Enterprise User Security
Security Centrally Managed Users
Security Fine-grained Auditing
Security Privilege Analysis
Security Real Application Security
Security Redaction
Security Transparent Sensitive Data Protection
Security Virtual Private Database
Snapshots and Cloning Storage Snapshot Optimization
Spatial and Graph Data Parallel spatial index builds
Spatial and Graph Data Multimaster replication of SDO_GEOMETRY objects
Spatial and Graph Data Partitioned spatial indexes
VLDB, Data Warehousing, and Business Intelligence Oracle Partitioning
VLDB, Data Warehousing, and Business Intelligence Oracle On-Line Analytical Processing (OLAP)
VLDB, Data Warehousing, and Business Intelligence Oracle Advanced Compression
VLDB, Data Warehousing, and Business Intelligence Advanced Index Compression
VLDB, Data Warehousing, and Business Intelligence Prefix Compression (also called Key Compression)
VLDB, Data Warehousing, and Business Intelligence Hybrid Columnar Compression
VLDB, Data Warehousing, and Business Intelligence Hybrid Columnar Compression Row-Level Locking
VLDB, Data Warehousing, and Business Intelligence Heat Map
VLDB, Data Warehousing, and Business Intelligence Automatic Data Optimization
VLDB, Data Warehousing, and Business Intelligence Basic Table Compression
VLDB, Data Warehousing, and Business Intelligence Deferred Segment Creation
VLDB, Data Warehousing, and Business Intelligence Bitmapped index, bitmapped join index, and bitmap plan conversions
VLDB, Data Warehousing, and Business Intelligence Parallel query/DML
VLDB, Data Warehousing, and Business Intelligence Parallel statistics gathering
VLDB, Data Warehousing, and Business Intelligence Parallel index build/scans
VLDB, Data Warehousing, and Business Intelligence Parallel Data Pump Export/Import
VLDB, Data Warehousing, and Business Intelligence In-memory Parallel Execution
VLDB, Data Warehousing, and Business Intelligence Parallel Statement Queuing
VLDB, Data Warehousing, and Business Intelligence Parallel capture and apply via XStream
VLDB, Data Warehousing, and Business Intelligence Transportable tablespaces, including cross-platform and full transportable export and import
VLDB, Data Warehousing, and Business Intelligence Summary management—Materialized View Query Rewrite

If you need any of the above, the you must use Oracle Enterprise Edition 

Now we look at the features that are included in the Oracle 19c Standard edition, but are limited.

Category Feature Notes
Consolidation Oracle Multitenant – # of PDBs The number value in each column indicates the maximum number of pluggable databases (PDBs) that can be created for each offering.

For all offerings, if you are not licensed for Oracle Multitenant, then you may have up to 3 user-created PDBs in a given container database at any time.

Manageability SQL Plan Management SE2: Only one SQL plan baseline per SQL statement is allowed and SQL plan evolution is disabled. Limits on baseline capture methods as well.

The following DBMS_SPM functions and procedures are not allowed: CONFIGURE, LOAD_PLANS_FROM_AWR, LOAD_PLANS_FROM_SQLSET, and all functions and procedures associated with SQL plan evolution.

If you are not using pluggable databases, or if three databases are enough, and if you are not using sophisticated plan management, then you can likely use Standard Edition.

If you know of any other enterprise-only options that are not listed here, or if you think I misstated anything, please comment.  I’d like to hear from you. Also, if you know of other good disaster recovery alternatives, let me know.

If you are not sure about any of this, or you just want to double-check your thought process, leave a comment or give me a call and I will be happy to have a conversation with you about it.

Ensure Redundant Database Coverage, During Covid-19 and Always

Ensure Redundant Database Coverage, During Covid-19 and Always

One of the principles of Buda Consulting’s redundant database coverage is that we always have at least two people who know your databases and your environment. This best practice is especially important at this time.

In normal times, this helps with responsiveness and cuts down on required knowledge transfer when a problem occurs or when an urgent change is necessary.

But the impact that Covid-19 is having on all of us illustrates another, more important reason. 

Fortunately, most people that contract the illness get minor symptoms and recover quickly.  But sadly, those that get very sick, are incapacitated very quickly.  I personally know two people, both relatively young, that died from Covid within 5 days of first showing symptoms. One within two days. The progression of the symptoms is very rapid, incapacitating the virus’ most unfortunate victims very quickly.  Leaving little time to make preparations.

While it may seem like a trivial matter when considering the magnitude of loss that many are suffering, losing your critical data when your business is struggling to adjust to the rapidly changing environment can be debilitating for your business.

If your databases are housing mission-critical data, best practice at this time and always is to have more than one person who has the knowledge and ability to manage your database systems and to respond to any problems that arise.  After your sole DBA gets sick may simply be too late. 

Don’t wait, make sure that at least two people in your organization know how to connect to your databases and are familiar with the environment today.  Or reach out to a trusted redundant database coverage service provider like Buda Consulting and engage someone else to back you up. It has never been more critical to do so.

Stay safe!