KishanRSojitra
KishanRSojitra

Reputation: 277

OrientDB CRUD for large and nested data

I'm very new to OrientDB, I'm trying to create a structure to insert and retrieve large data with nested fields and I couldn't find proper solution or guideline.

This is the structure of table I want to create:

{
  UID,
  Name,
  RecordID,
  RecordData: [
    {
      RAddress,
      ItemNo,
      Description
    },
    {
      RAddress,
      ItemNo,
      Description
    },
    {
      RAddress,
      ItemNo,
      Description
    }
    ....Too many records....
    ]
},
{
  UID,
  Name,
  RecordID,
  RecordData: [
    {
      RAddress,
      ItemNo,
      Description
    },
    {
      RAddress,
      ItemNo,
      Description
    },
    {
      RAddress,
      ItemNo,
      Description
    }
    ....Too many records....
    ]
}
....Too many records....

Now, I want to retrieve Description field from table by querying ItemNo and RAddress in bulk.

For example, I have 50K(50000) pairs of UID or RecordID and ItemNo or RAddress, based on this data I want to retrieve Description field. I want to do is with the fastest possible way. So can any one please suggest me good query for this task?

I have 500M records in which most of the record contains 10-12 words each.

Can anyone suggest CRUD queries for it?

Thanks in advance.

Upvotes: 0

Views: 231

Answers (1)

dgiannotti
dgiannotti

Reputation: 371

You might want to create a single record using content as such:

INSERT INTO Test CONTENT {"UID": 0,"Name": "Test","RecordID": 0,"RecordData": {"RAddress": ["RAddress1", "RAddress2", "RAddress3"],"ItemNo": [1, 2, 3],"Description": ["Description1", "Description2", "Description3"]}}

That'll get you started with embedded values and JSON, however, if you want to do a bulk insert you should write a function, there are many ways to do so but if you want to stay on Studio, go for Function tab.

As for the retrieving part:

SELECT RecordData[Description] FROM Test WHERE (RecordData[ItemNo] CONTAINSTEXT "1") AND (RecordData[RAddress] CONTAINSTEXT "RAddress1")

Upvotes: 1

Related Questions