Некоторые могут сказать, что управление данными в JavaScript не совсем оптимально. Каждый набор данных, который вы вводите в свое приложение JavaScript, разрознен и редко может быть объединен логическим образом. Обычно это приводит к слабой связи данных и несколько разрозненному взаимодействию. Это также приводит к отвращению к данным в JavaScript, которое раздражает сильно нормализованные наборы данных. Таким образом, вместо этого мы получаем монолитные базы данных с частыми вызовами API для получения новых объемов данных. Я предлагаю найти золотую середину.

Реляционные базы данных использовались в качестве модели для организации данных почти 50 лет. Хранение данных в денормализованных таблицах и создание связей между этими таблицами предоставляет широкий спектр возможностей для повышения производительности, обслуживания и повторного использования. Поскольку наборы данных играют все возрастающую роль в веб-приложениях, есть кое-что, что можно сказать о внедрении концепций реляционных баз данных в нашу стратегию управления данными JavaScript. Это не означает, что мы должны спроектировать всю реализацию SQL на JavaScript, но мы должны унаследовать некоторые из основных концепций, когда нам нужно управлять данными в приложении.

При работе с традиционными базами данных вы узнаете, что таблицы связаны друг с другом и хранятся в общей схеме. Javascript при хранении данных не содержит такой структуры данных. Вместо этого он хранит данные индивидуально, без возможности их подключения. Если ваше приложение содержит схему, вы можете легко добавлять, удалять, объединять, суммировать и фильтровать данные для создания уникальных представлений ваших данных, которые будут использоваться в информационных панелях, визуализациях и отчетах.

По сути, схема - это просто метаданные о ваших таблицах. Он может содержать информацию об именах таблиц, именах столбцов, индексах, первичных и внешних ключах. Кроме того, схема также работает как способ создания некоторого уровня абстракции вокруг ваших данных. Включая свои данные в схему, вы ограничиваете прямой доступ пользователя к данным. Вместо этого вы предоставляете им интерфейс к данным через методы объекта. В идеале в этой реализации пользователю никогда не должен требоваться прямой доступ к данным. Это позволяет схеме поддерживать контроль над всеми необходимыми характеристиками каждого набора данных. Массив наборов данных может храниться в частной переменной и будет полагаться на сеттеры и геттеры для доступа к отдельным таблицам по имени. Это накладывает ограничения, которые обеспечат правильное управление нашими данными: уникальность имен наборов данных, контроль над типами и включение первичных ключей, чтобы назвать некоторые из них.

По мере того, как на стороне клиента передается все больше данных, браузеры становятся более способными обрабатывать данные, а сетевые вызовы продолжают оставаться узким местом для более крупных вызовов данных, поэтому внедрение методов диспетчера данных в JavaScript может принести большую пользу. В настоящее время я работаю над проектом с открытым исходным кодом jschema.js, который демонстрирует некоторые из этих ключевых концепций, изложенных выше. Я рекомендую вам взглянуть и оставить отзыв о реализации, наборе функций и общей концепции.

jschema.js на Github: https://github.com/ignoreintuition/jSchema
jschema.js на NPM: https://npmjs.com/package/jschema.js