В настоящее время у меня есть API, который принимает файлы JSON (которые являются сериализованными JSON-объектами, которые содержат некоторые данные о транзакциях пользователя) и сохраняет их на сервере. Каждый такой JSON-файл имеет уникальный глобальный идентификатор и уникальный пользователь, с которым он связан. Каждый день генерируются миллиарды таких файлов. Затем пользователь должен иметь возможность запрашивать все файлы JSON, связанные с ним, и создавать кучу агрегированных результатов, рассчитанных поверх этих файлов.Как хранить миллиарды файлов JSON и запрашивать их
Типичный JSON-файл, который должен быть сохранен выглядит примерно так:
[ { "currencyCode" : "INR",
"receiptNumber" : { "value" : "1E466GDX5X2C" },
"retailTransaction" : [ { "grandTotal" : 90000.0,
"lineItem" : [ { "otherAttributes" : { },
"sale" : { "description" : "Samsung galaxy S3",
"discountAmount" : { "currency" : "INR",
"value" : 2500
},
"itemSubType" : "SmartPhone",
"otherAttributes" : { },
"unitCostPrice" : { "quantity" : 1,
"value" : 35000
}
},
"sequenceNumber" : 1000
},
{ "customerOrderForPickup" : { "description" : "iPhone5",
"discountAmount" : { "currency" : "INR",
"value" : 5000
},
"itemSubType" : "SmartPhone",
"otherAttributes" : { },
"unitCostPrice" : { "quantity" : 1,
"value" : 55000
}
},
"otherAttributes" : { },
"sequenceNumber" : 1000
}
],
"otherAttributes" : { },
"reason" : "Delivery",
"total" : [ { "otherAttributes" : { },
"type" : "TransactionGrossAmount",
"value" : 35000
} ]
},
null
],
"sequenceNumber" : 125435,
"vatRegistrationNumber" : "10868758650"
} ]
выше JSON является сериализованным сложным объектом, содержащего одиночным или массив объектов других классов в качестве атрибутов. Таким образом, «receiptNumber» является универсальным идентификатором файла JSON.
я должен был бы запросить такие вещи, как количество и значение customerOrderForPickup или GrandTotal сделки, а также в качестве aggegate различных таких транзакций JSONs **
Я хотел бы иметь некоторые предложения относительно того, как : 1) Хранение этих файлов JSON на сервере, файловая система, т.е. 2) Какую базу данных я должен использовать для запроса через эти файлы JSON с такой сложной структурой
Мое исследование привело к тому, что пара возможностей: 1) Используйте базу данных MongoDB для хранения JSON-представителей объекта и запроса через базу данных. Как будут храниться файлы JSON? Каким будет лучший способ хранения транзакций JSON в базе данных MongoDB? 2) Соедините базу данных SQL, содержащую уникальный глобальный идентификатор, идентификатор пользователя и адрес файла JSON на сервере, с агрегирующим кодом в этих файлах. Я сомневаюсь, что это можно масштабировать
Был бы рад, если у кого-нибудь есть какие-либо сведения по проблеме. Благодарю.
Рассматривали ли вы создание массива размерных данных на основе этих исходных данных? Аналитика по JSON в MongoDB разочаровывает. Это похоже на результат системы обработки транзакций. Реляционные/размерные БД очень долго выполняли этот вид работы. –
Это может быть достойным appoach, но тогда, когда свойства (например, мы добавляем больше статистических мер), файл данных продолжает расти, разве вы не думаете, что это создаст проблему? – zenCoder
Миллиарды входа каждый день? Это опечатка? – shahkalpesh