Modeling Hierarchical Data in Postgres

Hierarchical data has historically been a challenge with relational databases. There are well-known solutions for implementing a hierarchy in a purely relational fashion, but their complexity and performance are not generally desirable. To overcome this, some modern RDBMSs have a special data type for hierarchical values. In the case of Postgres, this data type is the ltree.

The ltree data type allows for storing paths similar to filesystem paths or DNS records, and provides the ability to perform hierarchical queries which are much cleaner and more efficient than their purely relational counterparts. But often we want to have further constraints, such as requiring the existence of all ancestors in each path, and this requires additional work. Here we develop a complete implementation of the common use case of an entity hierarchy with the same properties as a filesystem directory tree.

ltree Basics

The ltree documentation refers to each ltree value as a path, and each component of the path as a label. A path is a series of labels separated by Continue reading

7 Habits of a Killer Sprint Team

This post was co-authored by Dave Arndt and Kevin Miles. With 40+ combined years of architecture/development experience on various Sprint teams at different companies, we have identified some key behaviors that all our most effective teams have exhibited as well as noting some (sometimes subtle) unhealthy behaviors.

If you are currently on a team that is performing poorly and claims that “Agile does not work for our team, we’re different, we’re unique” or you’re just experiencing pushback and foot-dragging while attempting to adopt these types of healthy habits you will have to be the change for the team. Or, you may want to change the team that you are on.

This article requires some basic understanding of Agile Software Development.

Focus on Commitments

Team pays attention to the story burndown as a primary chart during standup.

Unhealthy: Team pays attention to the task burn-down.

We all know that a story takes the time that it takes regardless of your best estimations, but keeping an eye on the burndown helps the team evaluate what actions may help get things back on track. For example, by watching burndown you may realize that QA is often light at the beginning of a sprint and slammed at the end, perhaps holding up several stories from finishing. This may tip you off that you can reorganize story priority so that some stories can be delivered to the QA column earlier. Delivering on Commitments helps to build trust with your team and its stakeholders.

Continuous Improvement

Team makes explicit efforts to identify what is going right and wrong and focuses on making changes necessary to improve. Retros are genuinely valued and anticipated by team members.

Unhealthy: Team views the retro as a gripe session without results and discontinues.

This is simply taking advantage of the power of continuous improvement or Kaizen. These changes are often small and easily achieved. When a team focuses and revisits items that they themselves have deemed important to change, add, remove or simply improve they will be making minor adjustments and corrections that will ultimately add up to big gains for productivity and collaboration. This also helps to breed trust between Product Owner and team members because of the effort put towards quality and productivity.

The Team Succeeds or Fails Together

Because the team is working to a known business goal each sprint, members are quick to Continue reading

How is Your Data Quality

As a long-time data professional, I am pleased to see that companies have put a much greater focus on the quality of their corporate data assets in recent years. As everyone rushes to herald data as their #1 corporate asset, it is important to realize that the collection, transformation, and publication of flawed data can have far-reaching negative impacts.

IBM estimates that the yearly cost of poor quality data in the United States in 2016 alone was $3.1 trillion. Do I have your attention now? Decisions made based on inaccurate or mischaracterized data can negatively impact your corporate operations, profitability, and other key processes.

Laws and regulations protecting PHI and PII are now common place and companies go to great lengths to mask and encrypt this type of data. But how do you know if one of your source systems is embedding a credit card number or a social security number in a text field or is using it as an unencrypted primary key? The answer is, you probably don’t. So, what can you do about it?

Start the Conversation

A great starting point is socializing the concept of a data quality program with your co-workers in both the IT and business organizations. Begin asking questions about your data by reaching out to those who deal with production issues on a daily basis. Talk with your chief information security officer and ask him/her what concerns they might have with the cleanliness of your corporate data. Talk to peers in your industry and ask them what successes and failures they might be experiencing in the context of their corporate data. Do some research and get people talking.

Commit to Quality

It is imperative that a data quality initiative have the full support of key stakeholders who are committed to the long-term results. While an initiative of this type may start out as a project, it is important to Continue reading