<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Diego Villalpando's Blog</title>
  <link href="https://dialvive.dev/atom.xml" rel="self"/>
  <link href="https://dialvive.dev/blog/"/>
  <updated>2023-05-06T21:10:28+00:00</updated>
  <id>https://dialvive.github.io/blog/</id>
  <author>
   <name>Diego Villalpando</name>
   <email>dialvive@protonmail.com</email>
  </author>
  
  <entry>
   <title>What is the Best File Management System?</title>
   <link href="https://dialvive.dev/blog/2023/05/06/The-Best-File-Management-System"/>
   <updated>2023-05-06T00:00:00+00:00</updated>
   <id>https://dialvive.github.io/blog/2023/05/06/The-Best-File-Management-System</id>
   <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I’ve always said that less is more. And in today’s rant, I’d like to elaborate on why having an application serving (or even working with) files using a File Manager System, is such a bad idea.&lt;/p&gt;

&lt;p&gt;I do believe that we are living in the future, and we have an enormous array of applications (dependencies, frameworks, you name it) at our disposal that help us not re-invent the wheel each time we want to develop a new feature, or even modernizing legacy systems. I mean, why bother reinventing the wheel when we have access to Michelin or Pirelli wheels already at our disposal? Even if we don’t want to pay for top-notch wheels with guarranty and support, in the Software Engineering world we always have Open-Source options.&lt;/p&gt;

&lt;p&gt;There are frameworks that help us to use a File Management System in a secure way. But it is up to every developer (and architect) to have special focus on security when working with those. A simple wrong assumption or bad development practice can led your application to expose the File System you are using, along with your probably confidential and sensitive data, and your dignity and reputation as well.&lt;/p&gt;

&lt;p&gt;Serving files through applications is really useful in some cases, they may allow an application to import or export data in a friendly and structured way without using an API for less tech savvy final users (specially in a B2C setting). And just passing files from one place to another may seem like the fastest and easiest solution for this purpose, but at what cost? It will not take much time for you to realize that the security hardening of such system will take a lot of effort, time, and money.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://media.licdn.com/dms/image/D5612AQEG_yzVm3jpPA/article-inline_image-shrink_1500_2232/0/1683406698150?e=1688601600&amp;amp;v=beta&amp;amp;t=CxPYkgtMPk-XOgjB927WPItqT68oOgDScudKLih9XtU&quot; alt=&quot;Michelin Tires&quot; title=&quot;Michelin Tires. Photo by Michelin Motorsport Rally, licenced under CC BY-NC-ND 2.0&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;concerns-with-file-based-application-storage&quot;&gt;Concerns with File-based Application Storage&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Lack of Data Integrity and Consistency&lt;/strong&gt;: File systems do not provide built-in mechanisms for ensuring data consistency, enforcing referential integrity, or handling concurrency. Ensuring data integrity and consistency becomes the responsibility of the application or developers. Don’t you want some ACID (Atomicity, Consistency, Integrity, Durability)?&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Limited Search and Query Capabilities&lt;/strong&gt;: File systems lack advanced querying and search functionalities compared to databases. Performing complex searches, filtering, or sorting operations on files becomes challenging without implementing challenging and complex custom solutions (That will probably abuse sketchy batch or bash scripts).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Access Control and Security Challenges&lt;/strong&gt;: File systems often have limited access control capabilities compared to databases. It can be challenging to enforce fine-grained permissions or track user actions on files. Additionally, securing files against unauthorized access or tampering requires additional measures beyond file system-level controls.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Vulnerabilities and Security Risks&lt;/strong&gt;: Common Weakness Enumerations (CWE) such as 22 to 59, 61 to 67, 69, 72, 73, 98, 219, 378, 379, 426, 427, 428, 434, 552, 538, 541, and 775, highlight the potential dangers associated with file-based storage. By avoiding files altogether, we can mitigate these risks and enhance the overall security posture of our application by design.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Added Maintenance Overhead&lt;/strong&gt;: Most file management systems, especially Windows or Linux operating systems, require an additional layer of maintenance. This includes regular updates, patches, security configurations, and monitoring to ensure the stability and security of the operating system. And really, if we are building a new application, are we really setting up a full featured Linux or Windows server for our application these days? Probably serving a minimal Docker image will suffice.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://media.licdn.com/dms/image/D5612AQEGNOfEE2LnQg/article-inline_image-shrink_1500_2232/0/1683405521920?e=1688601600&amp;amp;v=beta&amp;amp;t=Pi6CVFOBfOM-e_xqss_CFkjyjIeor8_GGT0QahlsNEQ&quot; alt=&quot;Mail processing facility in NYC 1924&quot; title=&quot;Mail processing facility in NYC 1924. Photo by The Smithsonian Institution, licenced under CC Zero&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;advantages-of-using-a-document-based-database&quot;&gt;Advantages of Using a Document-based Database&lt;/h3&gt;

&lt;p&gt;A document-based database, such as MongoDB or CouchDB, offers an alternative approach to file management. Storing data as documents provides several advantages. It allows for flexible schema design, efficient querying and indexing, seamless scalability, and built-in replication for high availability:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Structured Data Management&lt;/strong&gt;: Databases provide a structured approach to data storage, allowing for efficient querying, indexing, and searching. This is especially beneficial when dealing with large amounts of data or complex data relationships.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Improved Data Consistency&lt;/strong&gt;: Databases enforce data consistency by supporting transactional operations. This ensures that data remains accurate and reliable, even in concurrent access scenarios or during system failures.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Access Control and Security&lt;/strong&gt;: Databases offer built-in access control mechanisms, allowing administrators to define user roles and permissions. This ensures that only authorized individuals can access, modify, or delete data. Additionally, databases provide security features like encryption and auditing to protect sensitive information.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Scalability and Performance&lt;/strong&gt;: Databases, including MongoDB, are designed to handle scalability and performance requirements. They can efficiently manage large datasets, distribute data across multiple nodes, and handle high volumes of read and write operations.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Flexibility in Data Modeling&lt;/strong&gt;: MongoDB, being a NoSQL database, offers flexibility in data modeling. It allows for dynamic schema design, accommodating evolving data structures and facilitating agile development. This can be advantageous when dealing with unstructured or semi-structured data.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Implementing Data Versioning Systems&lt;/strong&gt;: Versioning files stored in a document-based database is often easier and more manageable than in a file system. With the right database configuration and structure, it becomes straightforward to track and manage different versions of data. This simplifies collaboration, auditing, and rollback scenarios, ensuring data integrity and reducing complexity.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Migrating Data&lt;/strong&gt;: One of the significant advantages of moving away from file-based storage is the ease of data migration. Whether it’s for disaster recovery purposes, system upgrades, or troubleshooting, migrating data stored in a document-based database is typically simpler than dealing with file systems. The structured nature of the database allows for seamless transfer, transformation, and consolidation of data across different environments.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Relying on an application to serve or manage files through a file management system poses significant security risks and drawbacks. While there may be some cases where serving files through an application seems convenient, the disadvantages outweigh the benefits.&lt;/p&gt;

&lt;p&gt;By avoiding the use of file management systems and embracing document-based databases, we can mitigate security risks, enhance data integrity, and streamline data management processes. It’s a step towards a more secure and efficient application architecture.&lt;/p&gt;

&lt;p&gt;Sometimes the best file management system is simply not having files altogether.&lt;/p&gt;

&lt;h4 id=&quot;looking-for-the-comments-feel-free-to-leave-a-comment-on-linkedin-or-github-speech_balloon&quot;&gt;Looking for the comments? Feel free to leave a comment on &lt;a href=&quot;https://www.linkedin.com/pulse/what-best-file-management-system-diego-a-villalpando/&quot;&gt;LinkedIn&lt;/a&gt; or &lt;a href=&quot;https://github.com/Dialvive/dialvive.dev/issues/5&quot;&gt;GitHub&lt;/a&gt;. :speech_balloon:&lt;/h4&gt;
</content>
   <author>
     <name>Diego Villalpando</name>
     <uri>https://dialvive.github.io/about.html</uri>
   </author>
  </entry>
  
  <entry>
   <title>Understanding Pentaho Data Integration: Jobs and Transformations</title>
   <link href="https://dialvive.dev/blog/2023/04/29/Understanding-Pentaho-Data-Integration-Jobs-and-Transformations"/>
   <updated>2023-04-29T00:00:00+00:00</updated>
   <id>https://dialvive.github.io/blog/2023/04/29/Understanding-Pentaho-Data-Integration-Jobs-and-Transformations</id>
   <content type="html">&lt;h2 id=&quot;contents-&quot;&gt;Contents &lt;a name=&quot;Contents&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#contents-&quot;&gt;Contents &lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#differences-between-jobs-and-transformations&quot;&gt;Differences between Jobs and Transformations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#shared-elements&quot;&gt;Shared Elements&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#references&quot;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Pentaho Data Integration (PDI) is a powerful open-source ETL tool that users can use to extract, transform, and load data from various sources into a target system. In PDI, a typical ETL workflow consists of Jobs and Transformations.&lt;/p&gt;

&lt;p&gt;A Transformation represents the data transformation part of an ETL workflow, and performs data manipulation tasks. Like extracting data from various sources, performing calculations, filtering, sorting, joining, and writing data to different destinations. It is designed to be reusable and can be called from a job or another transformation.&lt;/p&gt;

&lt;p&gt;On the other hand, a Job represents the orchestration part of an ETL workflow and handles the sequence of tasks to be executed. It can call one or more Transformations or Jobs, execute shell scripts or database operations, check for conditions, define dependencies between tasks, and handle error and recovery scenarios.&lt;/p&gt;

&lt;p&gt;In simpler terms, a transformation performs data manipulation tasks, while a job orchestrates the sequence of tasks to be executed in an ETL process.&lt;/p&gt;

&lt;h2 id=&quot;differences-between-jobs-and-transformations&quot;&gt;Differences between Jobs and Transformations&lt;/h2&gt;

&lt;p&gt;A key difference between a job and a transformation is that a transformation operates on a single set of data at a time, while a job can execute many transformations, each with its set of data. A job can also perform tasks that are outside the scope of a transformation, such as sending notifications, file management, or writing logs.&lt;/p&gt;

&lt;p&gt;Both Jobs and Transformations contain various components to create robust ETL workflows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Job Entries&lt;/strong&gt; represent the different tasks or processes that need to be executed as part of the job. Job entries can include Transformations, shell scripts, database operations, file operations, and more. Each job entry performs a specific task and can be configured with various options and parameters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://media.licdn.com/dms/image/D5612AQE6lCJCelMB1w/article-inline_image-shrink_1500_2232/0/1682795831213?e=1688601600&amp;amp;v=beta&amp;amp;t=VXcszLbWca4ANDz76DkuoG6QAnZERBtgnBu1zyptYdM&quot; alt=&quot;A list of Job Entries&quot; title=&quot;Most of the available Job Entries of PDI 9.3&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Transformation Steps&lt;/strong&gt; represent the actions performed on the data during the ETL process. Each step performs a specific operation on the data (whether it is to read, transform, or write) and can be configured with various options and parameters to achieve the desired results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://media.licdn.com/dms/image/D5612AQE6c7qhHvIsqw/article-inline_image-shrink_1500_2232/0/1682795910008?e=1688601600&amp;amp;v=beta&amp;amp;t=hoNahnzOxnHqDnkFUjhWdUOtWQ2eJ-5L8N4y16xt6C0&quot; alt=&quot;A list of Transformation Steps&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;shared-elements&quot;&gt;Shared Elements&lt;/h2&gt;

&lt;p&gt;Both Jobs and Transformations are also composed of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Hops&lt;/strong&gt;: These are the lines that connect Job Entries or Transformation Steps and define the flow of execution between them. They can be used to connect different components in a linear or non-linear fashion, allowing for complex workflows.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Parameters&lt;/strong&gt;: These are variables that users can pass into a Job or Transformation at runtime, allowing for greater flexibility and reusability. They can configure different aspects, such as database connections or file paths, without the need to define them each time.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Variables&lt;/strong&gt;: These are user-defined variables that can store and manipulate data within the Job or Transformation. Variables can be used to store temporary data, configure options, or perform calculations.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Data&lt;/strong&gt;:  These are not present in KJB or KTR files, since they are generated or obtained through input Steps at runtime.  They are passed between Entries or Steps through Hops as table rows (Like a relational DB).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both Parameters and Variables can be recalled in Entries and Steps following this format: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;${PARAM_NAME}&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%%PARAM_NAME%%&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Understanding the differences between Jobs and Transformations in Pentaho Data Integration is crucial for building effective and efficient ETL workflows. While both Jobs and Transformations are vital components of a successful ETL process, they have different purposes and are used in different ways. Jobs are used to orchestrate the execution of tasks and can perform tasks outside the scope of Transformations, while Transformations perform data manipulation tasks. By utilizing both Jobs and Transformations effectively, users can extract, transform, and load data from various sources into a target system seamlessly.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Hitachi Vantara (Mar/2018). &lt;em&gt;Basic Concepts of PDI: Transformations, Jobs and Hops&lt;/em&gt;. &lt;a href=&quot;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/010&quot;&gt;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/010&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hitachi Vantara (Dec/2017). &lt;em&gt;Parameters&lt;/em&gt;. &lt;a href=&quot;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/050/010&quot;&gt;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/050/010&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hitachi Vantara (Dec/2017). &lt;em&gt;Variables&lt;/em&gt;. &lt;a href=&quot;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/050/020&quot;&gt;https://help.hitachivantara.com/Documentation/Pentaho/8.0/Products/Data_Integration/Data_Integration_Perspective/050/020&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;looking-for-the-comments-feel-free-to-leave-a-comment-on-linkedin-or-github-speech_balloon&quot;&gt;Looking for the comments? Feel free to leave a comment on &lt;a href=&quot;https://www.linkedin.com/pulse/discover-key-differences-between-jobs-transformations-diego-a-/?trackingId=rMeAzKWkQVWgN0WqMlPd6g%3D%3D&quot;&gt;LinkedIn&lt;/a&gt; or &lt;a href=&quot;https://github.com/Dialvive/dialvive.dev/issues/4&quot;&gt;GitHub&lt;/a&gt;. :speech_balloon:&lt;/h4&gt;
</content>
   <author>
     <name>Diego Villalpando</name>
     <uri>https://dialvive.github.io/about.html</uri>
   </author>
  </entry>
  
  <entry>
   <title>How to Install Pentaho Data Integration</title>
   <link href="https://dialvive.dev/blog/2023/04/23/How-to-Install-Pentaho-Data-Integration"/>
   <updated>2023-04-23T00:00:00+00:00</updated>
   <id>https://dialvive.github.io/blog/2023/04/23/How-to-Install-Pentaho-Data-Integration</id>
   <content type="html">&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#Introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Version&quot;&gt;Which version should I use?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Install&quot;&gt;How to install PDI&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;introduction-&quot;&gt;Introduction &lt;a name=&quot;Introduction&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Pentaho Data Integration, or PDI, is a powerful open-source ETL tool. It extracts, transforms, and loads data for many applications. PDI has a visual interface to create data integration jobs. Users define data sources, manipulate data through functions, and specify the load location. In real-life, PDI combines data from various sources for analysis, reporting, or warehousing.&lt;/p&gt;

&lt;p&gt;Examples of PDI usages include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;migrating legacy systems to modern databases,&lt;/li&gt;
  &lt;li&gt;financial reporting automation,&lt;/li&gt;
  &lt;li&gt;creating data feeds for web apps,&lt;/li&gt;
  &lt;li&gt;consuming and generating message queues,&lt;/li&gt;
  &lt;li&gt;creating and managing Big Data jobs,&lt;/li&gt;
  &lt;li&gt;and even machine learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important  note, there are two main versions of PDI available. Pentaho Enterprise Edition, and community Pentaho Data Integration. Some key differences between the two versions include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Support: Paid PDI version comes with technical support, and the community version relies on community forums.&lt;/li&gt;
  &lt;li&gt;Features: Paid PDI includes advanced features such as big data integration with Hadoop, Spark, and NoSQL databases, job orchestration, and workflow automation, which are not available in the community version.&lt;/li&gt;
  &lt;li&gt;Scalability: Paid PDI is designed to handle larger volumes of data and can scale to meet the needs of larger enterprises, while the community version is suitable for smaller-scale projects.&lt;/li&gt;
  &lt;li&gt;Security: Paid PDI includes enhanced security features such as data encryption, user authentication, and access controls, which are not available in the community version.&lt;/li&gt;
  &lt;li&gt;Licensing: The community version is open-source and free to use, while the paid version requires a license fee.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this blog I will focus only in PDI community version. It is worth mentioning that PDI community version is enough for many enterprise uses. You don’t need the enterprise version for most use-cases, there’s always a workaround for CE limitations.&lt;/p&gt;

&lt;h2 id=&quot;which-version-should-i-use-&quot;&gt;Which version should I use? &lt;a name=&quot;Version&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;As any big application, PDI has Long-Term-Support and Short-Term-Support versions. I would suggest you always use an LTS version. Unless you are working with a legacy PDI implementation. Or you want to have the cutting-edge features.&lt;/p&gt;

&lt;p&gt;You can check the &lt;a href=&quot;https://support.pentaho.com/hc/en-us/articles/205789159-Pentaho-Product-Version-End-of-Life-Policy&quot;&gt;support policy per version here.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;how-to-install-pdi-&quot;&gt;How to install PDI &lt;a name=&quot;Install&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;If you don’t have java installed, download the required Java version from your preferred JDK provider:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;For PDI version 3.x and 4.x, use Java 1.6.&lt;/li&gt;
  &lt;li&gt;For PDI version 5.x, use Java 1.7.&lt;/li&gt;
  &lt;li&gt;For PDI version 6.x and later, use Java 1.8.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that PDI may not work properly with later versions of Java, so it’s recommended to use the specific Java version required for each version of PDI.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Head over to &lt;a href=&quot;https://sourceforge.net/projects/pentaho/files/&quot;&gt;SourceForge Pentaho Community Edition site&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;Select the version you wish to install (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Pentaho-X.X&lt;/code&gt;),&lt;/li&gt;
  &lt;li&gt;Select client-tools,&lt;/li&gt;
  &lt;li&gt;Click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pdi-ce-X.X.x.x-xxx.zip&lt;/code&gt; to download,&lt;/li&gt;
  &lt;li&gt;Before extracting the zip file, open a file explorer and go to your desired installation path,&lt;/li&gt;
  &lt;li&gt;Create a folder called pentaho, and then a design-tools folder within,&lt;/li&gt;
  &lt;li&gt;Extract the zip on a folder with the zip name, within the design-tools folder,&lt;/li&gt;
  &lt;li&gt;Your installation path might look like:
    &lt;ul&gt;
      &lt;li&gt;Linux: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/pentaho/design-tools/pdi-ce-X.X.x.x-xxx&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Windows: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Program Files\pentaho\design-tools\pdi-ce-X.X.x.x-xxx&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Mac:  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Applications/pentaho/design-tools/pdi-ce-X.X.x.x-xxx&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;[Optional] If you have or plan to have other Java versions, add to your environment variables:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PENTAHO_JAVA_HOME&lt;/code&gt;: put the path to the required Java installation folder.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;[Optional] There will be a data-integration folder within your installation directory. Open it, and create a shortcut to spoon.sh if you are using Linux or Mac, or to spoon.bat if using Windows. Rename it to “PDI ce X.X” where ce is community edition, and X.X its version. Drag it to your desired location.
    &lt;ul&gt;
      &lt;li&gt;In Windows, you might want to copy the shortcut to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Pentaho&lt;/code&gt; for it to appear in your startup menu.&lt;/li&gt;
      &lt;li&gt;If you are a terminal enthusiast, you might want to add the path to the appropriate spoon file to your PATH environment variable, or to your bash profile.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You should be able to open Pentaho Data Integration, by executing your shortcut, or the spoon file.&lt;/p&gt;

&lt;h2 id=&quot;conclusion-&quot;&gt;Conclusion &lt;a name=&quot;Conclusion&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Not having an official installer, and having to install PDI manually might seem daunting. But as you now know, it’ll only take a few minutes. Feel free to install multiple PDI versions using this same post.&lt;/p&gt;

&lt;p&gt;Now you are able to explore PDI and play with it to get to know the interface and components. As you explore, it might seem like there’s a steep learning curve to start using PDI, but that is far from the truth.  With Pentaho Data Integration at your disposal, you’ll be well-equipped to handle even the most complex data integration challenges,  it’s a valuable tool that can help you streamline your data integration processes and improve your overall ETL workflow.&lt;/p&gt;

&lt;p&gt;Coming next on this blog series, we will learn the PDI inner workings and components. Keep an eye for the next posts.&lt;/p&gt;

&lt;h2 id=&quot;references-&quot;&gt;References &lt;a name=&quot;References&quot;&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Hitachi Vantara (Dec/2022). &lt;em&gt;Installing Pentaho Data Integration CE&lt;/em&gt;. &lt;a href=&quot;https://www.hitachivantara.com/en-us/pdf/implementation-guide/three-steps-to-install-pentaho-data-integration-ce.pdf&quot;&gt;https://www.hitachivantara.com/en-us/pdf/implementation-guide/three-steps-to-install-pentaho-data-integration-ce.pdf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hitachi Vantara (No date). &lt;em&gt;Pentaho Community Edition (CE) Installation Guide for Windows - Whitepaper&lt;/em&gt;. &lt;a href=&quot;https://www.hitachinext.com/en-us/pdf/white-paper/pentaho-community-edition-installation-guide-for-windows-whitepaper.pdf&quot;&gt;https://www.hitachinext.com/en-us/pdf/white-paper/pentaho-community-edition-installation-guide-for-windows-whitepaper.pdf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Hitachi Vantara (Jun/22). &lt;em&gt;Install the PDI tools and plugins&lt;/em&gt;. &lt;a href=&quot;https://help.hitachivantara.com/Documentation/Pentaho/9.3/Setup/Install_the_PDI_tools_and_plugins#cp_pentaho_perform_manual_install_of_pdi_design_tools_and_plugins&quot;&gt;https://help.hitachivantara.com/Documentation/Pentaho/9.3/Setup/Install_the_PDI_tools_and_plugins#cp_pentaho_perform_manual_install_of_pdi_design_tools_and_plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;looking-for-the-comments-feel-free-to-leave-a-comment-on-linkedin-or-github-speech_balloon&quot;&gt;Looking for the comments? Feel free to leave a comment on &lt;a href=&quot;https://www.linkedin.com/pulse/how-install-pentaho-data-integration-diego-a-villalpando-vel%C3%A1zquez&quot;&gt;LinkedIn&lt;/a&gt; or &lt;a href=&quot;https://github.com/Dialvive/dialvive.dev/issues/3&quot;&gt;GitHub&lt;/a&gt;. :speech_balloon:&lt;/h4&gt;
</content>
   <author>
     <name>Diego Villalpando</name>
     <uri>https://dialvive.github.io/about.html</uri>
   </author>
  </entry>
  
</feed>
