IP Library Granted Patent US 12,197,521
Granted Patent B2
US 12,197,521 · App. 18/446,397 · Granted Jan 14, 2025

Spatial search using key-value store

Inventors: Swagata Prateek (Vancouver, CA); Vi Thuy Hai Nguyen (Vancouver, CA); Timur Amirov (Vancouver, CA); Anton Polyakov (North Vancouver, CA); Szymon Ulewicz (Vancouver, CA)
Assignee: Amazon Technologies, Inc.
G06F16/9537G06F16/901G06F16/9538H04W4/021
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,197,521
App. No.
18/446,397
Granted
Jan 14, 2025
Kind
B2
Abstract

A spatial search may be performed using representations of geometric shapes stored in a key-value store. A request to perform a spatial search may be received, the request including a geometric shape composed of one or more points. The points of the geometrical shape may be translated into one or more spatial indexes representing spatial cells using a space-filling curve. A key-value store may then be incrementally searched for each spatial index to identify spatial cells intersecting the geometric shape for which other known geometric shapes exist. The key-value store may then be searched to identify the known geometric shapes intersecting the geometric shape included in the search.

Claims (38)

1. A system, comprising:

a key-value data store comprising a plurality of spatial cell indexes and a plurality of cell membership indexes;

at least one processor; and

a memory, storing program instructions that when executed cause the at least one processor to implement a query processor configured to:

receive a request from a client to perform a search, the request identifying one or more indexes encoded using a space-filling curve that defines points within a multi-dimensional space as locations along a single-dimensional path that fills the multi-dimensional space;

for individual indexes of the one or more indexes:

apply respective sliding windows to the individual indexes to subdivide respective searches of the individual indexes into respective pluralities of search ranges; and

perform respective pluralities of queries of a key-value store using individual ones of the respective pluralities of search ranges to identify cells intersecting the respective individual indexes; and

send a response to the request to perform the search, the response based at least in part on the identified cells for the of the one or more indexes.

2. The system of claim 1 , wherein the requested search comprises a geometric shape, and wherein the one or more indexes are identified according to the geometric shape.

3. The system of claim 2 , wherein the response comprises one or more geometric shapes that are members of the identified cells, and wherein the query processor is further configured to query the key-value store to determine the one or more geometric shapes, the key-value store further comprising a plurality of cell membership indexes.

4. The system of claim 1 , wherein the receiving, applying, performing and sending are performed by a geofencing service that supports a plurality of clients, and wherein at least one of the plurality of cell indexes comprises an identifier associated with a client of the plurality of clients submitting the request.

5. A method, comprising:

receiving a request from a client to perform a search, the request identifying one or more indexes encoded using a space-filling curve that defines points within a multi-dimensional space as locations along a single-dimensional path that fills the multi-dimensional space;

for individual indexes of the one or more indexes:

applying respective sliding windows to the individual indexes to subdivide respective searches of the individual indexes into respective pluralities of search ranges; and

performing respective pluralities of queries of a key-value store using individual ones of the respective pluralities of search ranges to identify cells intersecting the respective individual indexes; and

sending a response to the request to perform the search, the response based at least in part on the identified cells for the of the one or more indexes.

6. The method of claim 5 , wherein the requested search comprises a geometric shape, and wherein the one or more indexes are identified according to the geometric shape.

7. The method of claim 6 , wherein the geometric shape comprises multiple points and wherein the spatial search identifies geometric shapes that contain or intersect the geometric shape.

8. The method of claim 6 , wherein the response comprises one or more geometric shapes that are members of the identified cells, and wherein the method further comprises querying the key-value store to determine the one or more geometric shapes, the key-value store further comprising a plurality of cell membership indexes.

9. The method of claim 6 , wherein the geometric shape is a point, and wherein the search identifies one or more geometric shapes that contain or intersect the point.

10. The method of claim 5 , wherein the geometric shape comprises two or more spatial dimensions.

11. The method of claim 5 , wherein the spatial search is a spatiotemporal search.

12. The method of claim 5 , wherein the receiving, the identifying, the querying and the sending are performed by a geofencing service, wherein the geofencing service supports a plurality of clients, and wherein at least one of the plurality of cell indexes comprises an identifier associated with the client of the plurality of clients submitting the request.

13. One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement:

receiving a request from a client to perform a search, the request identifying one or more indexes encoded using a space-filling curve that defines points within a multi-dimensional space as locations along a single-dimensional path that fills the multi-dimensional space;

for individual indexes of the one or more indexes:

applying respective sliding windows to the individual indexes to subdivide respective searches of the individual indexes into respective pluralities of search ranges; and

performing respective pluralities of queries of a key-value store using individual ones of the respective pluralities of search ranges to identify cells intersecting the respective individual indexes; and

sending to the client a response to the request to perform the spatial search based at least in part on the cells for the of the one or more indexes.

14. The one or more non-transitory, computer-readable storage media of claim 13 , wherein the requested search comprises a geometric shape, and wherein the one or more indexes are identified according to the geometric shape.

15. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the geometric shape comprises multiple points and wherein the spatial search identifies geometric shapes that contain or intersect the geometric shape.

16. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the response comprises one or more geometric shapes that are members of the identified cells, and wherein the method further comprises querying the key-value store to determine the one or more geometric shapes, the key-value store further comprising a plurality of cell membership indexes.

17. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the geometric shape is a point, and wherein the search identifies one or more geometric shapes that contain or intersect the point.

18. The one or more non-transitory, computer-readable storage media of claim 13 , wherein the geometric shape comprises two or more spatial dimensions.

19. The one or more non-transitory, computer-readable storage media claim 13 , wherein the spatial search is a spatiotemporal search.

20. The one or more non-transitory, computer-readable storage media of claim 13 , wherein the receiving, the identifying, the querying and the sending are performed by a geofencing service, wherein the geofencing service supports a plurality of clients, and wherein at least one of the plurality of cell indexes comprises an identifier associated with the client of the plurality of clients submitting the request.

Continuity (2)
Continuation 16917736 · Jun 30, 2020
Related Publication 20230385353A1 · Nov 30, 2023
References Cited (69)
US 6976027B2 · Cutlip · 2005 [cited by examiner]
US 7117199B2 · Frank · 2006 [cited by examiner]
US 7373353B2 · Adler · 2008 [cited by examiner]
US 7383275B2 · Chen · 2008 [cited by examiner]
US 7389283B2 · Adler · 2008 [cited by examiner]
US 7539693B2 · Frank · 2009 [cited by examiner]
US 7596581B2 · Frank · 2009 [cited by examiner]
US 7599988B2 · Frank · 2009 [cited by examiner]
US 7908280B2 · Frank · 2011 [cited by examiner]
US 7917464B2 · Frank · 2011 [cited by examiner]
US 7953732B2 · Frank · 2011 [cited by examiner]
US 8958817B1 · Murphy · 2015 [cited by examiner]
US 9201972B2 · Frank · 2015 [cited by examiner]
US 9436731B2 · Hu · 2016 [cited by examiner]
US 9501507B1 · Harris et al. · 2016 [cited by applicant]
US 9788161B1 · Xu et al. · 2017 [cited by applicant]
US 10013449B1 · Xiao et al. · 2018 [cited by applicant]
US 10135932B1 · Liu · 2018 [cited by examiner]
US 10423622B2 · Pounds · 2019 [cited by examiner]
US 10783173B2 · Peterson et al. · 2020 [cited by applicant]
US 11734241B2 · Dewan · 2023 [cited by examiner]
US 20020078035A1 · Frank · 2002 [cited by examiner]
US 20030212650A1 · Adler · 2003 [cited by examiner]
US 20030212677A1 · Chen · 2003 [cited by examiner]
US 20030212689A1 · Chen · 2003 [cited by examiner]
US 20040039738A1 · Cutlip · 2004 [cited by examiner]
US 20040078750A1 · Frank · 2004 [cited by examiner]
US 20050091193A1 · Frank · 2005 [cited by examiner]
US 20050091209A1 · Frank · 2005 [cited by examiner]
US 20060036588A1 · Frank · 2006 [cited by examiner]
US 20060036628A1 · Adler · 2006 [cited by examiner]
US 20060041551A1 · Adler · 2006 [cited by examiner]
US 20060106833A1 · Chen · 2006 [cited by examiner]
US 20060129529A1 · Adler · 2006 [cited by examiner]
US 20070271235A1 · Frank · 2007 [cited by examiner]
US 20080052303A1 · Adler · 2008 [cited by examiner]
US 20080109713A1 · Frank · 2008 [cited by examiner]
US 20080114736A1 · Frank · 2008 [cited by examiner]
US 20080115076A1 · Frank · 2008 [cited by examiner]
US 20080126343A1 · Frank · 2008 [cited by examiner]
US 20080133469A1 · Chen · 2008 [cited by examiner]
US 20080133559A1 · Adler · 2008 [cited by examiner]
US 20080228728A1 · Frank · 2008 [cited by examiner]
US 20080228729A1 · Frank · 2008 [cited by examiner]
US 20080228754A1 · Frank · 2008 [cited by examiner]
US 20100057407A1 · Fitt · 2010 [cited by examiner]
US 20100114905A1 · Slavik · 2010 [cited by examiner]
US 20150046411A1 · Kazmaier · 2015 [cited by examiner]
US 20150254302A1 · Hu · 2015 [cited by examiner]
US 20150264523A1 · Xu et al. · 2015 [cited by applicant]
US 20160117346A1 · Han · 2016 [cited by examiner]
US 20170293635A1 · Peterson · 2017 [cited by examiner]
US 20170337229A1 · Infante Suarez · 2017 [cited by examiner]
US 20180137209A1 · Black · 2018 [cited by examiner]
US 20180357250A1 · Poppen · 2018 [cited by examiner]
US 20180373730A1 · Ganti · 2018 [cited by examiner]
US 20190384864A1 · Ganti · 2019 [cited by examiner]
CN 107423368 · 2017 [cited by applicant]
CN 108090150A · 2018 [cited by examiner]
EP 2835747A2 · 2015 [cited by examiner]
Evaluating Geospatial Geometry and Proximity Queries Using Distributed Hash Tables, IEEE, Malensek et al., (Year: 2014). [cited by examiner]
Private search on key-value stores with hierarchical indexes, IEEE, Hu et al., (Year: 2014). [cited by examiner]
Towards parallel spatial query processing for big spatial data, IEEE, Zhong et al., (Year: 2012). [cited by examiner]
Zhang, et al., “DM-66 Spatial Indexing”, Retrieved from https://gistbok.ucgis.org/bok-topics/spatial-indexing on Jul. 1, 2020, pp. 1-7. [cited by applicant]
Amazon Web Services, “Amazon DynamoDB Developer Guide”, API Version Aug. 10, 2012, Updated Nov. 8, 2019, pp. 1-1136. [cited by applicant]
John Paul Titlow, “How Foursqure is Building a “Human” Map Framework to Rival Google's”, Retrieved from https://www.fastcompany.com/3007394/how-foursquare-building-humane-map-framework-rival-googles?cid=search on Jul. 1… [cited by applicant]
MongoDB, “New Geo Features in MongoDB 2.4”, Retrieved from https://www.mongodb.com/blog/post/new-geo-features-in-mongodb-24 on Jul. 1, 2020, Updated Oct. 10, 2019, pp. 1-10. [cited by applicant]
Unknown, “S2 Cells”, Retrieved from https://s2geometry.io/devguide/s2cell_hierarchy on Jul. 1, 2020, pp. 1-27. [cited by applicant]
International Search Report and Written Opinion mailed Oct. 13, 2021 in PCT/US2021/039572, Amazon Technologies, Inc., pp. 1-12. [cited by applicant]