Lesezeit
5 min

Datenschutz- und Leistungsupdate

Es ist ein Jahr her, seit wir Metriken in mave.io eingeführt haben, und seitdem haben wir Millionen von Aufrufen verarbeitet. Wir open sourced es für die Einhaltung unseres Versprechens, die Privatsphäre Ihrer Kunden zu gewährleisten. Es läuft auf dem Phoenix Framework basierend auf Elixir und Postgresql mit TimescaleDB. Ein großartiger Cocktail, um ein einfaches Paket zusammenzustellen, mit dem Sie Aufrufe messen und Videonutzungsdaten aggregieren können. Wir finden, dass Elixir und Phoenix wirklich großartig für den Umgang mit vielen gleichzeitigen Verbindungen](https://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections) sind, indem Sie Multiplexing-Websockets verwenden, da Sie Daten aus mehreren Videos auf Ihrer Website verarbeiten können, und Postgresql mit TimescaleDB eignet sich hervorragend für den Umgang mit diesen Zeitreihendaten. Aber es war Zeit für ein Update.

Das Problem

Nicht alle Daten wurden von TimescaleDB in unserem Metrikprodukt verwaltet. Wir hatten viele Daten, bei denen es sich nicht um Zeitreihen handelte, und wir verwendeten dafür Postgresql. Am Anfang war das kein Problem, aber als wir wuchsen, bekamen wir Leistungsprobleme. Außerdem verfügten wir über viele Daten, die nicht genutzt wurden, und zahlten dafür Leistungseinbußen. Wir mussten die Daten strukturieren und komprimieren und die Größe unserer Datenbank verringern, um die Leistung der Abfragen zu verbessern.

Abgesehen von der wachsenden Datenmenge haben wir auch keine effiziente Möglichkeit gefunden, die Sekunden abzufragen, die sich die Leute die Videos angesehen haben. Das Zeigen von Engagement unterscheidet Videometriken von anderen Metriktools. Wir mussten die Art und Weise verbessern, wie wir diese Daten speichern und abfragen.

Darüber hinaus ist uns aufgefallen, dass einige Kunden die Metriken komplett deaktivieren wollten, da ihnen die Privatsphäre ihrer Kunden noch wichtiger ist und sie eigentlich überhaupt nichts verfolgen möchten. Wir sind bestrebt, die Privatsphäre Ihrer Kunden zu schützen, deshalb möchten wir Ihnen auch die Möglichkeit geben, noch einen Schritt weiter zu gehen. Wir mussten eine Möglichkeit bieten, Metriken vollständig zu deaktivieren.

Die Lösung

Es ist ein bisschen technisch und es ist eine ganze Menge, deshalb hier eine Aufzählungsliste, um es leichter verständlich zu machen, um zu verstehen, was wir bisher gemacht haben:

  • Für jedes Video, das Sie ansehen (oder für das Sie Metriken starten), erstellen wir einen Phoenix-Kanal, der als Sitzung dargestellt wird, kombiniert mit einigen normalisierten Daten über den Browser und das Gerät (ohne dass ein Fingerabdruck möglich ist). Wir haben dies in TimescaleDB in eine Hypertabelle umgewandelt, die im Laufe der Zeit komprimiert werden soll.
  • Wir erfassen für jede Sitzung die Wiedergabe- und Pausenereignisse. Das Trennen der Verbindung (bedeutet: Schließen des Tabs) führt ebenfalls zu einem Pause-Ereignis auf dem Server, weshalb wir in erster Linie Websockets verwenden.
  • In Elixir gibt es einen Genserver, der alle Ereignisse stapelweise verarbeitet, analysiert und sicherstellt, dass es sich um die richtigen Daten handelt, bevor er sie zur Datenbank hinzufügt. Elixir kann viele Ereignisse gleichzeitig verarbeiten, die Datenbank jedoch nicht.
  • In diesem Prozess erstellen wir dieses Konzept namens Durations, das darstellt, wie lange jemand ein Video angesehen hat, einschließlich der Anzahl der Sekunden, die er angesehen hat. Was wirklich cool ist! Postgresql bietet eine Möglichkeit, dies einfach zu speichern, und zwar vom Typ int4range.
  • Anhand dieses Bereichs können wir auch feststellen, ob die Sitzung bereits eine Dauer hat, die diesen Bereich (oder einen Teil davon) umfasst, und die Eindeutigkeit der Dauer bestimmen.

In mave.io zeigen wir aggregierte Daten pro Space, aber auch pro Video (natürlich). Es handelt sich um eine einfache Darstellung all dieser Ereignisse, um besser zu verstehen, wie Ihr Video angesehen wird. Neben diesen Informationen stellen wir auch Browser, Geräte und URLs zur Verfügung, auf denen Sie das Video eingebettet haben.

Metrikintegration in der mave.io-Videoansicht, zeigt Aufrufe, Engagement und Gerätedaten.
↳ Metrikintegration in der mave.io-Videoansicht, zeigt Aufrufe, Engagement und Gerätedaten.

Aber jetzt ist die Frage: Können Sie Ihren eigenen Metrikserver betreiben, Ihre eigene Aggregation aufbauen und diese in Kombination mit mave.io verwenden? Nun ja! Wir bieten jetzt eine Möglichkeit, Metriken und andere generische Dinge in unserer Komponentenbibliothek zu konfigurieren:

<script crossorigin type="module">
  import {
    Player,
    setConfig,
  } from "//cdn.video-dns.com/npm/@maveio/components/+esm";

  setConfig({
    metrics: { enabled: true, socket: "wss://your_own_metrics_instance" },
  });
</script>

Wie Sie sehen, können Sie Metriken auch vollständig für alle Mave-Elemente auf Ihrer Site deaktivieren. Dadurch landen die Daten nicht in mave.io – es bleibt also leer, aber Sie können Ihren eigenen Server starten und abfragen, was Sie sehen möchten. Sie müssen.io überhaupt nicht dazu zwingen, Metriken zu verwenden:

Metrics
maveio/metrics an GitHub

Wir haben es auch so geändert, dass es ein Mono-Repo für Server und Client ist, sodass Sie nicht verwechseln können, was Sie für den Einstieg benötigen, wenn Sie es selbst ausführen möchten. Teilen Sie uns mit, wenn Sie Fragen haben oder daran interessiert sind, Ihren eigenen Metrikserver zu betreiben, indem Sie sich an unseren Support wenden oder auf unserem Discord chatten.

Veröffentlicht am 19. März 2024
kompatibel mit
Entwickler?
Unsere Dokumentation führt Sie Schritt für Schritt durch die Videoeinbettung – vom einfachen Einstieg bis zu individuellen Konfigurationen. Sie erklärt verschiedene Hosting-Optionen einschließlich unseres Standard-CDN und die Integration in gängige Web-Frameworks.
script
react
vue
1
2
3
4
5
🍪 Klicken Sie auf „Akzeptieren“, um zu bestätigen, dass Sie damit einverstanden sind, dass wir keine Cookies verwenden. Ja, dieses Banner ist nur zur Ansicht da!
Akzeptieren