Разработка базы данных для: очень иерархических данных;автономное подмножество кэширования для обработки;от маленького до среднего размера;(полный новичок) - PullRequest
0 голосов
/ 06 июня 2019

Я обнаружил, что у меня есть проект (очень расслабленный, практически без последствий для неудачи), который, я думаю, требует какой-то базы данных. Проблема в том, что, хотя я все еще довольно неопытен в целом, я никогда не касался какой-либо базы данных, кроме учебников, которые я мог бы найти в Google и настроить ваше среднее домашнее облако. Я застрял на том, что не знаю, чего не знаю.

Это о ситуации:

Несколько сотен различных автоматизированных тестовых систем будут часто записывать небольшие объемы данных по медленной сети в базу данных. Немногие пользователи будут редко получать большие подмножества этих данных из базы данных по медленной сети. Затем данные будут обработаны, что потребует большого количества операций чтения, и в этот момент требуется очень высокая производительность.

Это будут данные (по порядку величин):

  • 1000 продуктов, содержащих
  • 10 вариантов, содержащих
  • 100 партий, содержащих
  • 100 объектов, содержащих
  • 10 тест-систем, содержащих
  • 100 тестовых шагов, содержащих
  • 10 записей

Это в основном маркированное B-дерево с этапами тестирования в качестве покидающих узлов (поскольку их формат был стандартизирован).

Партия всегда будет принадлежать одному варианту, объект всегда будет принадлежать одному и тому же варианту (но, возможно, нескольким партиям), и вариант всегда будет принадлежать одному продукту. Существуют сотни тысяч различных этапов тестирования.

Возможные запросы будут пытаться получить (например,):

  • Все из пакета (необязательно: и значение записи в диапазоне)
  • Все из варианта
  • Все тестовые шаги типа X и Y из тестовой системы с именем Z

Насколько я могу судить, строки шириной в сотни тысяч столбцов (содержащие все, что описано выше) не кажутся хорошей идеей, равно как и триллион строк (и средняя точка между этими двумя до сих пор кажется весьма экстремальной) .

Я бы действительно хотел использовать иерархическую природу данных, но все, что я нашел, например, что-то вроде вложенных баз данных в том, что они просто не вещь.

Было бы хорошо, если бы вы могли помочь мне с:

  1. Что искать
  2. Что было бы хорошим подходом для структурирования и хранения этих данных
  3. Где-то, где я могу узнать о том, как избежать ужасов SQL, даже если я нашел много
  4. Если есть отличный способ / наилучшая практика, о которой я должен знать, о передаче запрашиваемых данных и локальном их кэшировании для обработки

Спасибо и хорошего дня

Andreas

1 Ответ

0 голосов
/ 06 июня 2019
  1. Поиск "нормализация базы данных".
  2. Нормализованная реляционная база данных - это тонкая структура.
  3. Если вы хотите избежать ужасов SQL, вы также можете попробовать Нет-SQL Документно-ориентированная база данных , такая как MongoDB.Я на самом деле предпочитаю такой тип базы данных в очень многих сценариях.
  4. База данных будет кешировать результаты вашего запроса, и, конечно, какой бы инструмент вы ни использовали для запроса к базе данных, он будет кешировать данные в памяти инструмента (иликэширует хотя бы часть результатов запроса, если число результатов очень велико).Вы также можете записать свои результаты в файл.Существует много способов «кэширования», и все они полезны в разных ситуациях.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...