The subject application relates to facilitating electronic commerce via one or more networks via a shared shopping list.
Presently, many users of network applications and services have had experiences with or are familiar with the concept and use of wish list applications and services that provide a user a mechanism to temporarily store online references to items or item links, e.g., goods, services, offers, etc., prior to purchasing these items, and that provide item references to others so that such others may purchase the items as a gift for the user. A conventional wish list schema is directed to a user visiting a shopping web site and selecting an item to purchase where, for a variety of reasons, the user may desire to postpone the immediate purchase of the item. The user may choose to create a wish list associated with a particular shopping site and add the desired items to that wish list. As a result, the user ends up with a wish list that is accessible only with information identifying the user. Thus, if a user wanted a third party, such as a friend or a family member, to view the wish list and/or contribute to it, the user would be required to give each person his personal identifying information, such as username and password.
Additionally, in order to add an item to the user's item list in these conventional applications, the item needs to be found in and selected from a particular website. Items discovered at third party online sources cannot be added directly to the item list. For example, an Internet user who learns of a product at a third party website must first navigate to the site where the user's item list resides, and then search for that item again. Only then can the user add the found item to the user's item list, creating an inconvenient experience to say the least.
Furthermore, typical pre-shopping applications do not allow the user to save product description tags, which may assist a user in selecting the best items in the item lists for later purchase. Such tags may be references to general product categories, manufacturers, names of friends who recommended the item or friends who already own the product of interest, the product's popularity ranking, product reviews, and notifications of the product's related activities. In essence, a typical shopping scenario today consists of a user looking to buy a product, conducting product research at various online and off line sources, and then visiting shopping sites to find and purchase a product. Such systems are not flexible and give users limited options for shopping for and selecting items at different websites.
The above-described deficiencies of today's online shopping systems are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.
The following presents a simplified summary in order to provide a basic understanding of some aspects disclosed herein. This summary is not an extensive overview. It is intended to neither identify key or critical elements nor delineate the scope of the aspects disclosed. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Various embodiments for a shared shopping system are described herein based on social graph information and spanning multiple merchant providers. An exemplary device can include a component for implementing a shopping portal according to one or more of the above-described embodiments. The device can further include an access security module. Social graph information for use in connection with any of the embodiments described herein can come from internal sources or external sources. In this regard, the object information respecting items selected by users represented by a given user social graph can be stored in storage. Data storage of the device can be configured to store object information related to items for user consumption from disparate online merchants in a data representation associated with a user. The access security module can be configured to categorize the object information according to a set of predetermined criteria and allow access to the object information by others represented in a social graph for the user that have received authorization to access the object information according to the various embodiments.
In another non-limiting embodiment, content related to items for user consumption from disparate online merchants can be stored in a data representation associated with a user. The device can receive a request to access the content from another computing device associated with a member, other than the user, of a social network defined by social graph information associated with the user. The request to access the content can be granted or denied as a function of permissions determined for the member from the social graph information.
In another non-limiting embodiment, object information related to items for sale from disparate online merchants can be stored in a data representation associated with a user. The object information can be categorized and displayed according to predetermined criteria. Whether received or determined, access information is obtained for others, represented in social graph data representing a social graph for the user, that have received authorization to access the object information. The access information is employed in determining what permissions the other users have with respect to user's shared shopping list, and vice versa. Based on the access information, access to the object information by a computing device associated with one of the others represented in the social graph data is either allowed or denied. Also, whether addition of other information to the object information is also either allowed or denied can also be determined based on the access information.
These and other embodiments are described in more detail below.
a illustrates a process of navigating to another service member's Bag;
a illustrates exemplary further functionality provided by the statistics menu;
Embodiments and examples are described below with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details in the form of examples are set forth in order to provide a thorough understanding of the various embodiments. It will be evident, however, that these specific details are not necessary to the practice of such embodiments. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate description of the various embodiments.
As mentioned, most users of wish lists would reject the notion of sharing private information, such as password information, to third parties due to the sensitive nature of such information. Accordingly, various embodiments herein enable users to share their item list with a third party while retaining control over which information to reveal and to whom, and with a convenient mechanism for enabling third parties of interest to participate. For example, a user may want to ask for friends' opinions about the items in the user's list, ask for friends' recommendations, view what is in the user's list as recommendation ideas and view friends' wish lists as well. In this regard, in one aspect of one or more embodiments disclosed herein, a user's wish list is made accessible to other authorized users, such as the user's friends or other associated entities, e.g., according to a mechanism based on the user's online social presence.
In another aspect of one or more embodiments disclosed herein, users are allowed to choose items from different websites for inclusion in their wish lists. A set of interfaces and methods are provided that enable the user's wish list to be exposed to other users or entities via established social networks and related theme web portals, product databases, and forums. This allows users to add items from third party sources directly to their item list, and also allows them to make the wish list available to other people on a friends list associated with the usernames, or other identifiers, of third party web spaces.
In one example, an electronic item list system such as a wish list, referred to hereafter as “the Bag,” is employed with a shopping portal residing on a server computer that is accessible by a client computer. Methods employed to provide the functionality associated with the electronic item list system are also illustrated and described. A page, such as a hypertext mark-up language (HTML) page, can be displayed at a client and is programmed to be responsive to a user selecting one or more elements displayed on the page. It is noted that although the embodiments and examples will be illustrated with respect to an architecture employing HTML pages and the World Wide Web, the embodiments and examples may be practiced or otherwise implemented with any network architecture utilizing clients and servers, and with distributed architectures, such as but not limited to peer to peer systems.
In one example, a Bag is utilized in a themed social context, where shopping items to be purchased online and related information are shared among users who are associated with each other. Users may add items to their own Bags, and may also recommend items to be added to their friend's bags when authorized. For example, there may be sharing of items and related information with users associated with “Friends” in social networks, where groups of users allow each other to access each other's Bags to add items, comments on particular items, ratings, and other information to enhance the Bag sharing experience among users. This approach opens the social networking community up to a shopping experience that connects products available for purchase with the community collaboration that is widely seen in social networks, where people gather online to share, comment and recommend things to each other. Retailers and shopping portal websites may also take advantage by providing their own enhancements that enable the collaboration among users.
In one example, a user interface control, such as, but not limited to, a tool bar button, e.g., a user interface control indicating “Add to Bag”, may be installed on a web browser for selection by a user. Thus, as an example usage, when a user is shopping around different websites, the Add to Bag control or button may be selected to add the item being viewed to the user's Bag, or a drop down menu from the Add to Bag control, as another example, may enable the user to add the item being viewed to a friend of the user's Bag. Optionally, for instance, the user may then be queried “Are you sure you want to add this item to your Bag?” or “Are you sure you want to add this item to USER-B's Bag?” (a friend user for example), and the user may then confirm addition of the item to the desired Bag. It is noted that such implementation specific details are described herein for illustrative purposes only, and are not considered limiting on the concepts expressed by the underlying capabilities of the various embodiments.
In one non-limiting embodiment, by gathering information about where the item is located on a user's display screen, either explicitly, e.g., through layout information provided by a merchant, or implicitly, e.g., through information gathered from analysis of the web site markup, a visualization of the item moving from the web site display to a selected Bag can be effected. Based on similar mappings that can be generated between items on display at a merchant site and the Add to Bag control, in one non-limiting embodiment, a user can drag and drop the item with a pointing device such as a mouse, through a visualization overlay, from the location on screen to the Add to Bag control to effect the addition of the item to the Bag or a user's friend's Bag.
In another non-limiting example, the item may be selected, and a separate catalogue may be queried to determine whether the item is available in that catalogue. If available, then it is added to the Bag with an indicator related to the catalogue reference for later review or purchase. If it is not available in the catalogue, on back order, simply not existent, then an alternative item may be presented to the user for inclusion in the Bag. In this example, the catalogue provider may be limited in the items it can offer users, or may actually provide multiple alternative items and also price alternatives for the same or different items.
While availability can be taken into account in connection with addition to a Bag or not, in the content of a social network, it is not particularly relevant whether an item is in stock or not. Thus, in another embodiment, the Add to Bag control can also allow a user to add an item that is unavailable, or in pre-sale, to the Bag and wait until it comes available. This also assists the merchant in supply management—“what are users looking to buy?”, and help enable the supply chain stay consistent with demand for products whether in stock or not. Moreover, the Bag, through its interfaces with the merchants' back ends, can notify the user or a user's friend when the item becomes available, or once the pre-sale period terminates.
In yet another example, the system may include a combination of both a broad online access to different websites together with a catalogue. The catalogue may possibly be sponsored by a particular shopping portal or an aggregator of different shopping portal websites. In either configuration, commercial interests and consumers alike will likely promote a more robust, open and resourceful shopping experience where users may share items and related information with each other to make products and services more widely available and visible among users.
Once the items are captured and saved in the Bag, users and friends of users within the social context can collaborate and share information related to Bag items, enhancing the shopping experience through social networking. The experience may closely emulate shopping together with friends in a mall, but with a robust cadre of different types of information and services that make shopping for items in a broad spectrum of products and services available from different sources. Users that are mutually connected to each other via social networks may share items and related information with each other in a very open and free flowing manner.
In one example from a user's perspective, a user may be shopping for a portable music player at at an online retail service. The user may press the “Add to Bag” button on the user's browser. If a catalogue is associated, the browser may connect to the catalogue database and search out the item. If it contains the item desired, the portable music player in this example, then the browser may open a new page in the browser's tab. It may then ask the user to confirm adding the item to the bag, such as “Add this item to your Bag?”, and would add the item and any related information to the user's Bag, opening up the item for access and comment or other access and use by the user and any user's friends. If, however, the item is not available or on back order for example, the system may indicate to the user that the item is not available, not in stock, or on backorder, and give the user other options. One option may be an offer to remind the user when the item becomes available, perhaps sending the user a message when the item is available. This action may time out or expire over a period of time, or may provide periodic updates on the item to the user. The options may also be configurable by the user. For example, the user may be presented with an option box that allows a user to request an update for a period of time, email reminder, text message, indicator next to the item within the bag to show availability, or other indicator. The user may also be offered to choose other related items that are similar, cheaper, available, or somehow related. The user may be offered items that other users have chosen when they viewed the initial item, or perhaps items that their friends may have purchased in connection with the item of interest. Different scenarios and schemes may be configured according to the various embodiments, and those skilled in the art will understand that other related and naturally intuitive extensions of the concepts and examples described herein will be possible given this disclosure. Such extensions or related enhancements or examples will also be understood to be within the spirit and scope of the subject disclosure, defined by the appended claims and their equivalents, and also future presented claims and their equivalents based on the various embodiments disclosed herein. In one example from a user's perspective, an Internet user may be browsing at a library of articles and find a reference to a film, which user is interested to purchase. The user may navigate to a film description page of the library and press the “Add to Bag” button on the user's browser toolbar. The application extracts the film title and other essential information and opens a new browser tab presenting the user the Bag login page. Upon successful user authorization, the application scans a web database of the site where user Bag resides, finds the title of user's interest and displays a confirmation dialogue box to the user inquiring if the found title is the same as that which the user had been looking for. Upon user confirmation, application adds the item to the Bag. Now the user may purchase the item in the Bag immediately or at any later time.
In an illustrative example,
By default, all products displayed in the Bag collection 0109 may be displayed in chronological order. However, in full screen view the product list may be sorted by 0501 date item added, ratings, number of times the information on the item was shared with the user, number of reviews, or alphabetically. An items list may also be filtered by 0502 show all, show recently watched only, show highest rated only, show reviewed only, only show items, which information was shared or recommended by user friends with the user, show film clips only, or other filtering methods. Filtering and sorting may be presented in ascending or descending order.
The history of origin is the name of the source from which an item was added to the user's Bag. This feature is designed to assist a user in determining the value of the selection, or to help credit other users for recommending an item. For example, if an item was added by a close friend, it may be more highly regarded by a user compared to a random selection by the system or a recommendation by an unknown user, and thus the system may help users make a better purchasing decision based on the source of product discovery. Thus the history of origin may be the name of a social network, name of an online search engine, friend's name, and the like.
The aggregated rating is the combined item assessment of all service members displayed as a number in percentiles from 1 to 100. Whenever the rating of an item is not set by any user, the message “add your rating” is displayed in place of the rating number.
a illustrates a process of navigating to another service member's Bag. By clicking on a user's friend name 0312 anywhere in the shopping web portal 0101, for example, in the display of list of fiends 0813 of the product catalog area 0104, selected service member's Bag will appear 0313.
a illustrates the friend's statistic menu links 0902. Next to each link is the number representing the volume of items in the specified status. For example, the menu may contain links to recently purchased list 0904, highest rated list 0905, items for which Bag owner submitted a review 0906 and the list of clips made by the Bag owner 0907.
In one example, a plurality of links to an interface component allows a user to add products to a user's Bag and the user's friends to recommend products to the user. Such items of a product listing may necessarily require basic information including the items title and the item's buy and add to Bag links.—An item can be added to the Bag by clicking Add to Bag link from one of several sources. Add to Bag link or a message indicating that the item is already in the user's Bag may be located next to an item title in the catalogue item list, in item description page, in user's friends Bags, in a list of friend's activities, in the internal search results list, in the list of items recommended by other service members or in third party partnering web spaces such as shopping portals, product news sites, online product databases, social networks user posts, online recommendation and references sites, dictionaries, wikis, forums' and blogs' user posts, search engines, online banner advertisements, decision guides, next to items names in the search result lists of web search engines, and in other locations.
Additionally, an item can be added to the Bag by a custom add-on software application. Such add-on can be downloaded from the shopping web portal 0101 and installed at the user computer in order to enable the “Add to Bag” functionality at non-partnering web spaces. The add-on will place an Add to Bag button in the tools navigation pane of the user's browser. Then when a user is viewing a product web page at a third party websites, the Add to Bag button may be selected to add the item being viewed to the user's Bag. By clicking on the Add to Bag browser button, user activates add-on application functionality which extracts and temporarily stores essential product information, then connects with the web shopping portal 0101, finds the requested item in the products database and adds it to the user's Bag with reference to the product at the shopping web portal 0101, and not at the original source of discovery. However, proper source from which item was added to the Bag will be displayed in the history of origin fields, i.e. 0508b, 0509b, 0510b and 0511b. In the scenario where user attempts to add an item to the Bag, via Add to Bag browser toolbar button, which is already contained in the user Bag, a corresponding message will display to the user.
While viewing the list of all the product reviews at various views of the Bag area of the shopping web portal or the product catalogue, a user may click on the add review link, and enter and submit a review. Alternatively, from the all reviews list, a user may select a review and click on it to display all the comments selected review. Here a user may click on the add comment to review link, then write and submit it or select a comment and click on add comment to review's comment, then write it and submit it.
In various embodiments described herein, reference is made with respect to a user's “social presence” or to a user's “friends” of a “social network.” It is to be noted that such terms are used in an online context to generally to refer to an underlying social graph.
A social graph is a term coined by those working in the social areas of graph theory. It has been described as data structure(s) representing “the global mapping of everybody and how they're related”. Online social networks take advantage of social graphs by examining the relationships between individuals to offer a richer online experience. The term can be used to refer to an individual's social graph, e.g., the connections and relationships pertinent to that individual, or the term can also refer to all Internet users and their complex relationships.
In this regard, while a graph is an abstract concept used in discrete mathematics, a social graph describes the relationships between individuals online, e.g., a representation or description of relationships in the real world. A social graph is a sociogram that represents personal relations. In this regard, a social graph is a data representation, and can be defined explicitly by its associated connections, and stored in or across computer memory(ies). Social graph information can be exposed to websites, applications and services in order to take advantage of the rich information, e.g., demographic information, embodied by the graph information and associated data and metadata about the individuals comprising the graph. Example members 1, 2, 3, 4, 5 and 6 of an exemplary non-limiting social graph of interconnected members 1600 is depicted in
The concept of a social graph is not limited to just interconnections of people, but rather websites, applications and services can draw information about various objects and information, e.g., photos, audio, events, web pages, etc. and their relationships. This expands the social graph concept to more than just relationships between individuals and instead applies it to virtual non-human objects between individuals, as well.
Thus in various embodiments described herein, each service member can be allocated a personal social space associated with one or more Bags. The personal social space can include list of user virtual friends, which allows users to view the content of their friends' Bags, to view the list of items recommended by the user friends, to search for new items of interest based on friends' commends and dislikes per Personal user context, view the list of friends' social activities, and so on. For instance, the following activity types are considered as social: an item is purchased by a service member's friend, an item is rated by a service member's friend, an item is favoured by a service member's friend, etc., though by no means is the foregoing list inclusive or exhaustive as many other activities are considered social. Further, the user may select items of interest to preview, to add to own Bag or to purchase items, and so on.
Additionally, recommendations can be made based on a member's social graph and may be provided by directly recommending an item with an optional private message to one or more user friends, by rating an item, by writing a review, by commenting to a rating or review submitted by others, etc.
Social data can be homegrown or sourced from third parties, or a combination. For instance, any third party social networks and other online spaces where user interactions is permitted can be leveraged for social mapping information related to a given social graph, such as product discussion forums, fan sites, product news sites, online product databases, online recommendation and references sites, dictionaries, wikis, user blogs', search engines, decision guides, search engines, social network services, etc. Information exchange with social networks can be implemented through open authorization protocol, and depending on the social network related functionality, to allow standard and secure application programming interface (API) multi-domain authentication and authorization without exposing the user's credentials. Thus, optionally, visitors/users may login into the system using their social network accounts or other sources of social data. Additionally, the various embodiments for the above-described Bag services may import from personal user context data, user friends list and aggregated user context data from third party social networks. Furthermore, notifications of user social activities can be posted at the user's social network personal space, and thus the communication with such third-party social network services can be bi-directional, benefitting both systems with additional input. Such interaction provides an opportunity of expanding target audiences beyond a given set of members and allows an opportunity to send communications to third party social network friends, e.g., invitations to third party social network friends (personal or common) to join the service.
Also, the Bag need not be considered a flat structure. The Bag may include multiple levels, e.g., hierarchical levels, some of which may be categorized by the user-owner of the Bag who has ultimate authority of its control and maintenance. A user may categorize different portions of the Bag into areas for maintenance and/or display for different individuals, groups or subgroups. For example, in a social networking environment, a person may want to segregate different areas from various users, such as a parent wanting to show or otherwise share content or information to adult friends separately from children and young adults. A user may further want to separate items that the user chooses or submits into the user's Bag from items other users submit to the user's Bag. The user may also restrict or otherwise control submissions by certain or possibly all users into the user's Bag, and may even prohibit any submissions altogether.
Data storage 1730 can be configured to store object information related to items for user consumption from disparate online merchants in a data representation, e.g., the above-described Bag, associated with a user. Access security module 1710 can be configured to categorize the object information according to a set of predetermined criteria and allow access to the object information by others represented in a social graph for the user that have received authorization to access the object information according to the various embodiments.
One of ordinary skill in the art can appreciate that the various non-limiting embodiments of the shared shopping systems and methods described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store. In this regard, the various non-limiting embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage.
Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the shared shopping mechanisms as described for various non-limiting embodiments of the subject disclosure.
Each computing object 2010, 2012, etc. and computing objects or devices 2020, 2022, 2024, 2026, 2028, etc. can communicate with one or more other computing objects 2010, 2012, etc. and computing objects or devices 2020, 2022, 2024, 2026, 2028, etc. by way of the communications network 2040, either directly or indirectly. Even though illustrated as a single element in
There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any network infrastructure can be used for exemplary communications made incident to the shared shopping systems as described in various non-limiting embodiments.
Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, i.e., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client process utilizes the requested service without having to “know” any working details about the other program or the service itself.
In client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of
A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. Any software objects utilized pursuant to the techniques described herein can be provided standalone, or distributed across multiple computing devices or objects.
In a network environment in which the communications network 2040 or bus is the Internet, for example, the computing objects 2010, 2012, etc. can be Web servers with which other computing objects or devices 2020, 2022, 2024, 2026, 2028, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects 2010, 2012, etc. acting as servers may also serve as clients, e.g., computing objects or devices 2020, 2022, 2024, 2026, 2028, etc., as may be characteristic of a distributed computing environment.
As mentioned, advantageously, the techniques described herein can be applied to any device where it is desirable to facilitate shared shopping. It is to be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various non-limiting embodiments, i.e., anywhere that a device may wish to engage in a shopping experience on behalf of a user or set of users. Accordingly, the below general purpose remote computer described below in
Although not required, non-limiting embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various non-limiting embodiments described herein. Software may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Those skilled in the art will appreciate that computer systems have a variety of configurations and protocols that can be used to communicate data, and thus, no particular configuration or protocol is to be considered limiting.
With reference to
Computer 2110 typically includes a variety of computer readable media and can be any available media that can be accessed by computer 2110. The system memory 2130 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). Computer readable media can also include, but is not limited to, magnetic storage devices (e.g., hard disk, floppy disk, magnetic strip), optical disks (e.g., compact disk (CD), digital versatile disk (DVD)), smart cards, and/or flash memory devices (e.g., card, stick, key drive). By way of example, and not limitation, system memory 2130 may also include an operating system, application programs, other program modules, and program data.
A user can enter commands and information into the computer 2110 through input devices 2140. A monitor or other type of display device is also connected to the system bus 2122 via an interface, such as output interface 2150. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface 2150.
The computer 2110 may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer 2170. The remote computer 2170 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer 2110. The logical connections depicted in
As mentioned above, while exemplary non-limiting embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system.
Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate application programming interface (API), tool kit, driver source code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of techniques provided herein. Thus, non-limiting embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more aspects of the shared shopping techniques described herein. Thus, various non-limiting embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.
The word “exemplary” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used, for the avoidance of doubt, such terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements.
As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component,” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified sub-components, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it is to be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and that any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the described subject matter can also be appreciated with reference to the flowcharts of the various figures. While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the various non-limiting embodiments are not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Where non-sequential, or branched, flow is illustrated via flowchart, it can be appreciated that various other branches, flow paths, and orders of the blocks, may be implemented which achieve the same or a similar result. Moreover, not all illustrated blocks may be required to implement the methodologies described hereinafter.
As discussed herein, the various embodiments disclosed herein may involve a number of functions to be performed by a computer processor, such as a microprocessor. The microprocessor may be a specialized or dedicated microprocessor that is configured to perform particular tasks according to one or more embodiments, by executing machine-readable software code that defines the particular tasks embodied by one or more embodiments. The microprocessor may also be configured to operate and communicate with other devices such as direct memory access modules, memory storage devices, Internet-related hardware, and other devices that relate to the transmission of data in accordance with one or more embodiments. The software code may be configured using software formats such as Java, C++, XML (Extensible Mark-up Language) and other languages that may be used to define functions that relate to operations of devices required to carry out the functional operations related to one or more embodiments. The code may be written in different forms and styles, many of which are known to those skilled in the art. Different code formats, code configurations, styles and forms of software programs and other means of configuring code to define the operations of a microprocessor will not depart from the spirit and scope of the various embodiments.
Within the different types of devices, such as laptop or desktop computers, hand held devices with processors or processing logic, and also possibly computer servers or other devices that utilize one or more embodiments, there exist different types of memory devices for storing and retrieving information while performing functions according to the various embodiments. Cache memory devices are often included in such computers for use by the central processing unit as a convenient storage location for information that is frequently stored and retrieved. Similarly, a persistent memory is also frequently used with such computers for maintaining information that is frequently retrieved by the central processing unit, but that is not often altered within the persistent memory, unlike the cache memory. Main memory is also usually included for storing and retrieving larger amounts of information such as data and software applications configured to perform functions according to one or more embodiments when executed, or in response to execution, by the central processing unit. These memory devices may be configured as random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, and other memory storage devices that may be accessed by a central processing unit to store and retrieve information. During data storage and retrieval operations, these memory devices are transformed to have different states, such as different electrical charges, different magnetic polarity, and the like. Thus, systems and methods configured according to one or more embodiments as described herein enable the physical transformation of these memory devices. Accordingly, one or more embodiments as described herein are directed to novel and useful systems and methods that, in the various embodiments, are able to transform the memory device into a different state when storing information. The various embodiments are not limited to any particular type of memory device, or any commonly used protocol for storing and retrieving information to and from these memory devices, respectively.
Embodiments of the systems and methods described herein facilitate the management of data input/output operations. Additionally, some embodiments may be used in conjunction with one or more conventional data management systems and methods, or conventional virtualized systems. For example, one embodiment may be used as an improvement of existing data management systems.
Although the components and modules illustrated herein are shown and described in a particular arrangement, the arrangement of components and modules may be altered to process data in a different manner. In other embodiments, one or more additional components or modules may be added to the described systems, and one or more components or modules may be removed from the described systems. Alternate embodiments may combine two or more of the described components or modules into a single component or module.
Although some specific embodiments have been described and illustrated as part of the disclosure of one or more embodiments herein, such embodiments are not to be limited to the specific forms or arrangements of parts so described and illustrated. The scope of the various embodiments are to be defined by the claims appended hereto and their equivalents.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium.
Computing devices typically include a variety of media, which can include computer-readable storage media and/or communications media, which two terms are used herein differently from one another as follows. Computer-readable storage media can be any available storage media that can be accessed by the computer and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable storage media can be implemented in connection with any method or technology for storage of information such as computer-readable instructions, program modules, structured data, or unstructured data. Computer-readable storage media can include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible and/or non-transitory media which can be used to store desired information. Computer-readable storage media can be accessed by one or more local or remote computing devices, e.g., via access requests, queries or other data retrieval protocols, for a variety of operations with respect to the information stored by the medium.
Communications media typically embody computer-readable instructions, data structures, program modules or other structured or unstructured data in a data signal such as a modulated data signal, e.g., a carrier wave or other transport mechanism, and includes any information delivery or transport media. The term “modulated data signal” or signals refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in one or more signals. By way of example, and not limitation, communication media include wired media, such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. As used herein, unless explicitly or implicitly indicating otherwise, the term “set” is defined as a non-zero set. Thus, for instance, “a set of criteria” can include one criterion, or many criteria.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure.
In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims and their equivalents.