Ich sehe das so das wenn z.B. 1000 Spieler zur gleichen Zeit zugriff auf die Datenbank (umgangssprachlich) haben und alle Gegenstände in dieser einen Ansammlung sind würde der Server zu sehr belastet werden. Dies ist jedoch nur eine Vermutung von mir, ob das keine Auswirkung hat weiss ich nicht.
Wie gesagt, sehe ich kein Anwendungsfall dafür. Ich kenn jetzt dein Konzept nicht. Aber mal folgendes:
DataTable: Du kannst hier nur vorgegebene Daten auslesen. Willst du Daten ändern, erhält dein Spiel ein Update. Was mich zu der Frage bringt, warum Spieler den DataTable vom Server auslesen? DataTable bekommt der Spieler auf seinen Rechner.
Wenn du in einem DataTable suchen lässt, wobei hier auch erst wieder der Anwendungsfall betrachtet werden muss, dann kannst du das auf dem Server machen, der Nutzen wird allerdings nicht vorhanden sein.
Array: (Datenbank) In einem Array kannst du alles ändern was du willst. Das wohl typischste Array, was wir kennen, dürfte das Inventar sein. Natürlich kannst du in der Programmierung für alles mögliche ein Array anlegen. Dass du ein Array im Sinne einer echten Datenbank hast, wo alle Gegenstände bzw. Objekte deines Spiels drinn sind, halte ich mal für ausgeschlossen, da ein Anwendungsfall dafür nicht existieren dürfte.
Abhängig von deinem Konzept, brauchst du also nur wenige Arrays (vorgegebene Objekte) oder mehr Arrays (individualisierbare Objekte).
Soll der Spieler Eigenschaften bspw. durch Crafting eines Gegenständs ändern könne, dann brauchst nen Array. Erhält der Spieler von dir vorgegebene Gegenstände, dann brauchst nur nen DataTable.
Beispiel DataTable: Apfel <- hat nur vorgegebene Attribute (Haltbarkeine, Gesundheitsregeneration beim Essen) den Apfel kann dein Spieler nicht "pimpen"
Array: Schwert/Schild <- aus einem DataTable lootet dein Spieler ein Schwert, was vorgegebene Werte hat (Schaden, Haltbarkeit) jetzt willst du, dass der Spieler des Teil verbessern kann. Hierbei spielen verwendete Materialien und sein Skill etwas zu Verbessern eine Rolle. Es sollen zufällige Werte am Ende rauskommen. Das neu entstehende Item steht in keinem DataTable und muss in einem einem Array mit einer individuellen ID abgespeichert werden.
Es muss letztlich ein Anwendungsfall diskutiert werden. Denn anlegen eines Array aus einer Datenbank ist programmierbar und muss nur eindeutig sein. Dein Inventar hat immer eine ID für den Inventarplatz und ein Spalte als Referrenz für den Datatable oder eben einen leeren Platz für ein Individuelles Item.