Our intranet search was very slow, actually not doable with ASP.NET's InProc. With NCache, our search got us results in about 0.2 seconds.
Countries or Regions:
Arizona, California, Idaho, Nevada, Oregon, Washington and Pennsylvania
Based in Berkeley, California, Grocery Outlet offers extreme bargains on brand name merchandise, with prices often up to 50% cheaper than conventional retailers. The largest “extremevalue” grocer in the U.S., Grocery Outlet has over 185 locations in Arizona, California, Idaho, Nevada, Oregon, Washington and Pennsylvania. Grocery Outlet carries refrigerated and frozen foods, fresh produce, organics, dry groceries, beer and wine, health and beauty care, over-the-counter drugs, household products, toys and gifts.
Customer Needs Met:
Alachisoft, a California based company, designs, develops, and markets StorageEdge, NCache and TierDeveloper for .NET. NCache, a clustered object cache for .NET, allows customers to boost performance of their applications by as much as 10 times simultaneously enhancing application scalability and reliability. And, TierDeveloper, an object to relational (O/R) mapping code generator for .NET, cuts down development time by 50%.
You can download a free 60 days fully working trial of NCache from here.
12005 Ford Road, Suite 520
Dallas, TX 75234
US: +1 (214) 764-6933
UK: +44 207 993-8327
Software Development Manager
Grocery Outlet, Inc.
For its vast number of store owners and internal office personnel, Grocery Outlet wanted to have on its internal intranet an instant search mechanism for over 200,000 of its items available to its stores. Bryan McMaster, Software Development Manager, said, "We wanted that search to be as fast and efficient as a Google search. We tried leveraging our ASP.NET InProc caching, but it didn’t work out. It was too slow and not an extensive search. Basically, it was just not doable. It was taking 1.5 to 3 seconds and sometimes longer if the cache object expired."
The reason it wasn’t working for Grocery Outlet is because InProc has limitations. It was designed to be used in a single server, single process environment. It doesn’t work in a multi-server or multi-process ASP.NET environment, otherwise, sessions are lost. Plus, InProc has memory limitations. As the number of sessions in the ASP.NET process increases, every session requires memory. Memory size of this worker process grows significantly, and in a 32-bit platform, there is a 1GB memory limit on how large a worker process can become.
NCache with its extended list of user benefits and advantages provided the answer and gave Grocery Outlet a virtually instant and fast blink of an eye search. McMaster explained the three basic steps for the user to get the blazingly fast search. First, the user types in the Grocery Outlet item number, which calls out to a Web service. Next, the Web service takes in the amounts of characters typed in. Then, it goes to NCache and captures the results in the cache.
McMaster said, "The results come back to the user in about 0.2 seconds and that’s amazing."
The fast search at 0.2 second is in large part due to an SQL-like Object Query Language or OQL NCache provides and Microsoft’s Language Integrated Query or LINQ for .NET-based applications.
Object Query Language (OQL) lets Grocery Outlet customers search NCache based on object attributes rather than the keys. NCache requires all searchable attributes to be indexed, which helps quickly find the desired objects. The object query is distributed to all the cache servers to be run in parallel or just a single server depending on the topology being used and the results are then consolidated and returned. NCache allows API calls to be made and specify a search based on this object query language in order to fetch a collection of objects from the cache.
Meanwhile, LINQ for .NET helps in unifying the way data is accessed from various sources (objects, database, XML etc). NCache allows LINQ queries to be run on cached items by implementing a class named "NCacheQuery", which implements interface "IQueryable" provided by .NET. For executing LINQ queries, all that is required is to define an object implementing IQueryable interface and pass an instance of cache, which contains the object. NCache is integrated with LINQ in such a way that absolutely no code change is required in existing LINQ queries.
Grocery Outlet has barely tapped into the great number of features and benefits NCache offers. McMaster said, "I love NCache. We haven’t fully leveraged everything from NCache yet, however we’re in the process of development to use it for our Web farm for website high-availability."
The company plans to add new servers to the website and is looking forward to the high-level of scalability NCache provides. McMaster noted, "I’m looking forward to the endless possibilities NCache offers. We’ll be closely exploring its many features to determine how best to implement them as far as caching our data and having high-speed access to it."