DataHub: alat pencarian dan penemuan metadata yang serbaguna

DataHub: Alat pencarian dan penemuan metadata yang serbaguna.



Sebagai operator jaringan profesional dan grafik ekonomi terbesar di dunia , tim data LinkedIn terus bekerja untuk meningkatkan infrastrukturnya guna memenuhi permintaan ekosistem data besar kami yang terus berkembang. Seiring dengan bertambahnya volume dan variasi data, semakin sulit bagi ilmuwan dan insinyur data untuk menemukan aset data yang tersedia, memahami asal-usulnya, dan mengambil tindakan yang sesuai berdasarkan data tersebut. Untuk membantu kami terus meningkatkan kinerja dan menginovasi database, kami membuat alat pencarian dan penemuan metadata yang komprehensif, DataHub.



Catatan Editor: Sejak posting blog ini diterbitkan, tim telah membuka DataHub dengan kode sumber pada Februari 2020 . Pelajari lebih lanjut tentang cara open source untuk platform di sini .



Metadata penskalaan



Untuk meningkatkan produktivitas grup data LinkedIn, kami sebelumnya mengembangkan dan membuka WhereHows, sebuah repositori metadata pusat dan portal untuk kumpulan data. Jenis metadata yang disimpan mencakup metadata teknis (misalnya, lokasi, skema, bagian, kepemilikan) dan metadata proses (misalnya, asal, penyelesaian pekerjaan). WhereHows juga memiliki mesin pencari yang membantu Anda menemukan kumpulan data yang menarik.



Sejak rilis pertama WhereHows kami pada tahun 2016, semakin banyak minat dalam industri untuk meningkatkan produktivitas ilmuwan data dengan metadata. Misalnya, alat yang dikembangkan di area ini termasuk Dataportal AirBnb , Databook Uber , Metacat Netflix , Amundsen Lyft, dan yang terbaru Katalog Data Google. Di LinkedIn, kami juga sibuk memperluas koleksi metadata untuk kasus penggunaan baru dengan tetap menjaga privasi. Namun, kami menyimpulkan bahwa WhereHows memiliki keterbatasan mendasar yang mencegah kami memenuhi kebutuhan metadata kami yang terus berkembang. Inilah yang kami pelajari saat bekerja dengan penskalaan WhereHows:



  1. Push , pull: . API . push .
  2. , : WhereHows , . API, . . , , , . , , , .
  3. , . , , , . — , Hadoop, . , . , , .
  4. . (, , ), , , , . .
  5. : , , ( ). , ( , , , , API , , , , , . .), .


DataHub



WhereHows , . LinkedIn , , . , , DataHub, : LinkedIn , .



WhereHows : . , . DataHub , 19 , , , , , , . , , , API .





- DataHub — , . Ember Framework Play. , -, ES9, ES.Next, TypeScript, Yarn with Yarn Workspaces, , Prettier ESLint. , , .





, - DataHub , , . Yarn Workspaces Ember Ember. , (, ) (, Ember npm / Yarn), - DataHub .



, . , , , , .



DataHub



: (1) , (2) (3) / . :















, , . , . , OR, NOT , .



DataHub , . , , . , « », .



— / — . « », . , , , , . , , , , , , , . . , , .





DataHub, , . :



  1. : .
  2. : API, .
  3. : , .
  4. : , .




, — «, ». , :



  1. — : , , , .
  2. : , . , , (ACL) , , , . , , .


, , Pegasus, , LinkedIn. Pegasus . , Pegasus , .



, Pegasus , , - (ERD).





— , — . , OwnedBy, HasMember HasAdmin. , , , , .



ERD, , . , « ». , , . : , . . , , . .



, , , , , firstName , firstName . , « » .



Pegasus, , Pegasus (PDSC). . -, PDSC User:



{
  "type": "record",
  "name": "User",
  "fields": [
    {
      "name": "urn",
      "type": "com.linkedin.common.UserUrn",
    },
    {
      "name": "firstName",
      "type": "string",
      "optional": true
    },
    {
      "name": "lastName",
      "type": "string",
      "optional": true
    },
    {
      "name": "ldap",
      "type": "com.linkedin.common.LDAP",
      "optional": true
    }
  ]
}


URN, GUID. User , , LDAP, .



PDSC OwnedBy:



{
  "type": "record",
  "name": "OwnedBy",
  "fields": [
    {
      "name": "source",
      "type": "com.linkedin.common.Urn",
    },
    {
      "name": "destination",
      "type": "com.linkedin.common.Urn",
    },
    {
      "name": "type",
      "type": "com.linkedin.common.OwnershipType",
    }
  ],
  "pairings": [
    {
      "source": "com.linkedin.common.urn.DatasetUrn",
      "destination": "com.linkedin.common.urn.UserUrn"
    }
  ]
}


, , «» « », URN. , , «». , «», URN. OwnedBy .



, . , type ldap. , PDSC. « — », .



{
  "type": "record",
  "name": "Ownership",
  "fields": [
    {
      "name": "owners",
      "type": {
        "type": "array",
        "items": {
          "name": "owner",
          "type": "record",
          "fields": [
            {
              "name": "type",
              "type": "com.linkedin.common.OwnershipType"
            },
            {
              "name": "ldap",
              "type": "string"
            }
          ]
        }
      }
    }
  ]
}


, , : , ERD. « » .





DataHub : API, Kafka. , , , .



API DataHub Rest.li, RESTful, LinkedIn. Rest.li Pegasus , , , . , API — API .



, Kafka (MCE), , URN . MCE Apache Avro, Pegasus.



API Kafka . , , , . .



LinkedIn Kafka - , . MCE , , , . , Apache Samza . Samza , . Avro Pegasus API Rest.li .







, , . DataHub :



  1. -
  2. ,


DataHub , . , Espresso — NoSQL LinkedIn, - CRUD. Galene . , , , . , , .



DataHub (DAO), DAO -, DAO DAO. DAO , - - DataHub. DataHub , LinkedIn.





DAO — (CDC). , DAO «-» (MAE). MAE URN , . -, MAE , . MCE, MAE .





— . , . - Samza, MAE. MAE. , .



, URN MAE .







DataHub, LinkedIn. .



DataHub LinkedIn . 1500 , , . LinkedIn , 23 , 25 , 500 , , LinkedIn, , .



Kami terus meningkatkan DataHub dengan menambahkan lebih banyak cerita pengguna yang menarik dan algoritme relevansi ke produk. Kami juga berencana untuk menambahkan dukungan GraphQL built-in dan menggunakan Pegasus Domain Specific Language (PDL) untuk mengotomatiskan pembuatan kode dalam waktu dekat. Sementara itu, kami secara aktif bekerja untuk membagikan evolusi WhereHows ini dengan komunitas sumber terbuka, dan kami akan membuat pengumuman setelah DataHub dirilis ke publik.




All Articles