You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "Barry Oglesby (JIRA)" <ji...@apache.org> on 2017/05/22 19:21:04 UTC
[jira] [Created] (GEODE-2968) Provide an API to set identity
field(s) on JSON objects
Barry Oglesby created GEODE-2968:
------------------------------------
Summary: Provide an API to set identity field(s) on JSON objects
Key: GEODE-2968
URL: https://issues.apache.org/jira/browse/GEODE-2968
Project: Geode
Issue Type: Improvement
Components: serialization
Reporter: Barry Oglesby
I have a JSON object with 53 fields. The identity of that object is one specific field (the {{Unique_Key}} field in this case), but I can't specify that when loading the object. This causes {{PdxInstanceImpl equals}} and {{hashCode}} to use all 53 fields in their determinations and is especially bad for OQL queries.
I hacked {{PdxInstanceHelper addIntField}} to set an identity field like:
{noformat}
if (fieldName.equals("Unique_Key")) {
m_pdxInstanceFactory.markIdentityField(fieldName);
}
{noformat}
Here are some queries before and after this change:
Before:
{noformat}
Totals query=SELECT * FROM /data WHERE Agency = 'NYPD'; resultSize=1890; iterations=1000; totalTime=30529 ms; averagePerQuery=30.529 ms
Totals query=SELECT * FROM /data WHERE Incident_Address LIKE '%AVENUE%'; resultSize=2930; iterations=1000; totalTime=62723 ms; averagePerQuery=62.723 ms
Totals query=SELECT * FROM /data; resultSize=10000; iterations=1000; totalTime=87673 ms; averagePerQuery=87.673 ms
{noformat}
After:
{noformat}
Totals query=SELECT * FROM /data WHERE Agency = 'NYPD'; resultSize=1890; iterations=1000; totalTime=12417 ms; averagePerQuery=12.417 ms
Totals query=SELECT * FROM /data WHERE Incident_Address LIKE '%AVENUE%'; resultSize=2930; iterations=1000; totalTime=29517 ms; averagePerQuery=29.517 ms
Totals query=SELECT * FROM /data; resultSize=10000; iterations=1000; totalTime=44127 ms; averagePerQuery=44.127 ms
{noformat}
Here is an example of the JSON object:
{noformat}
{
"Unique_Key": 25419013,
"Created_Date": "04/24/2013 12:00:00 AM",
"Closed_Date": "04/25/2013 12:00:00 AM",
"Agency": "HPD",
"Agency_Name": "Department of Housing Preservation and Development",
"Complaint_Type": "PLUMBING",
"Descriptor": "WATER-SUPPLY",
"Location_Type": "RESIDENTIAL BUILDING",
"Incident_Zip": "11372",
"Incident_Address": "37-37 88 STREET",
"Street_Name": "88 STREET",
"Cross_Street_1": "37 AVENUE",
"Cross_Street_2": "ROOSEVELT AVENUE",
"Intersection_Street_1": "",
"Intersection_Street_2": "",
"Address_Type": "ADDRESS",
"City": "Jackson Heights",
"Landmark": "",
"Facility_Type": "N/A",
"Status": "Closed",
"Due_Date": "",
"Resolution_Description": "The Department of Housing Preservation and Development inspected the following conditions. No violations were issued. The complaint has been closed.",
"Resolution_Action_Updated_Date": "04/25/2013 12:00:00 AM",
"Community_Board": "03 QUEENS",
"Borough": "QUEENS",
"X_Coordinate_State_Plane": 1017897,
"Y_Coordinate_State_Plane": 212354,
"Park_Facility_Name": "Unspecified",
"Park_Borough": "QUEENS",
"School_Name": "Unspecified",
"School_Number": "Unspecified",
"School_Region": "Unspecified",
"School_Code": "Unspecified",
"School_Phone_Number": "Unspecified",
"School_Address": "Unspecified",
"School_City": "Unspecified",
"School_State": "Unspecified",
"School_Zip": "Unspecified",
"School_Not_Found": "",
"School_or_Citywide_Complaint": "",
"Vehicle_Type": "",
"Taxi_Company_Borough": "",
"Taxi_Pick_Up_Location": "",
"Bridge_Highway_Name": "",
"Bridge_Highway_Direction": "",
"Road_Ramp": "",
"Bridge_Highway_Segment": "",
"Garage_Lot_Name": "",
"Ferry_Direction": "",
"Ferry_Terminal_Name": "",
"Latitude": 40.74947521870806,
"Longitude": -73.87856355000383,
"Location": "(40.74947521870806, -73.87856355000383)"
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)