I am planning a high performance e-commerce project in asp.net and need help in selecting the optimal data retrieval model for the product catalog.
我正计划在asp.net中开展一个高性能的电子商务项目,并需要帮助选择产品目录的最佳数据检索模型。
Some details,
- products in 10-20 categories
- 1000-5000 products in every category
- products listed with name, price, brand and image, 15-40 on every page
- products needs to be listed without table-tags
- product info in 2-4 tables that will be joined together (product images not stored in db)
- webserver and sql database on different hardware
- ms sql 2005 on shared db-server (pretty bad performance to start with...)
- enable users to search products combining different criteria such as pricerange, brand, with/without image.
产品分为10-20类
每个类别1000-5000个产品
列出的产品名称,价格,品牌和形象,每页15-40
需要列出没有table-tags的产品
2-4个表中的产品信息将连接在一起(产品图像未存储在db中)
webserver和sql数据库在不同的硬件上
ms sql 2005在共享数据库服务器上(开始时性能相当糟糕......)
使用户能够搜索结合不同标准的产品,例如价格范围,品牌,有/无图像。
My questions are,
我的问题是,
- what technique shall I use to retrieve the products?
- what technique shall I use to present the products?
- what cache strategy do you recomend?
- how do I solve filtering, sortering, pageing in the most efficient way?
- do you have any recomendations for more reading on this subject?
我应该用什么技术来检索产品?
我应该用什么技术来展示产品?
你推荐什么缓存策略?
如何以最有效的方式解决过滤,分类,分页?
你有什么建议可以阅读这个主题吗?
Thanks in advance!
提前致谢!
4 个解决方案
#1
Let the SQL server retrive the data. With fairly good indexing the SQL server should be able to cope.
让SQL服务器检索数据。通过相当好的索引,SQL服务器应该能够应对。
in SQL 2005 you can do paging in results, that way you have less data to shuffle back and forth.
在SQL 2005中,您可以在结果中进行分页,这样就可以减少来回移动的数据。
#2
I think you will end up with a lot of text searching. Give a try for either lucene or Solr ( http server on top of lucene). CNET developed solr for their product catalog search.
我想你最终会进行大量的文本搜索。试试lucene或Solr(lucene之上的http服务器)。 CNET为其产品目录搜索开发了solr。
#3
Have you thought about looking at an existing shopping cart platform that allows you to purchase the source code?
您是否考虑过查看允许您购买源代码的现有购物车平台?
I've used www.aspdotnetstorefront.com
我用过www.aspdotnetstorefront.com
They have lots of examples of major e-commerce stores running on this platform. I built www.ElegantAppliance.com on this platform. Several thousand products, over 100 categories/sub-categories.
他们有很多在这个平台上运行的主要电子商务商店的例子。我在这个平台上建立了www.ElegantAppliance.com。数千种产品,超过100个类别/子类别。
#4
Make sure your database design is normalised as much as possible - use lookup tables where necessary to make sure you are not repeating data unnecessarily.
确保您的数据库设计尽可能正常化 - 在必要时使用查找表以确保不会不必要地重复数据。
Store your images on the server filesystem and store a relative (not full) path reference to them in the database.
将图像存储在服务器文件系统上,并在数据库中存储它们的相对(非完整)路径引用。
Use stored procedures for as much as possible, and always retrieve the least amount of data as you can from the server to help with memory and network traffic efficiencies.
尽可能使用存储过程,并始终从服务器检索最少量的数据,以帮助提高内存和网络流量效率。
Don't bother with caching, your database should be fast enough to produce results immediately, and if not, make it faster.
不要打扰缓存,您的数据库应该足够快,以便立即生成结果,如果没有,请加快速度。
#1
Let the SQL server retrive the data. With fairly good indexing the SQL server should be able to cope.
让SQL服务器检索数据。通过相当好的索引,SQL服务器应该能够应对。
in SQL 2005 you can do paging in results, that way you have less data to shuffle back and forth.
在SQL 2005中,您可以在结果中进行分页,这样就可以减少来回移动的数据。
#2
I think you will end up with a lot of text searching. Give a try for either lucene or Solr ( http server on top of lucene). CNET developed solr for their product catalog search.
我想你最终会进行大量的文本搜索。试试lucene或Solr(lucene之上的http服务器)。 CNET为其产品目录搜索开发了solr。
#3
Have you thought about looking at an existing shopping cart platform that allows you to purchase the source code?
您是否考虑过查看允许您购买源代码的现有购物车平台?
I've used www.aspdotnetstorefront.com
我用过www.aspdotnetstorefront.com
They have lots of examples of major e-commerce stores running on this platform. I built www.ElegantAppliance.com on this platform. Several thousand products, over 100 categories/sub-categories.
他们有很多在这个平台上运行的主要电子商务商店的例子。我在这个平台上建立了www.ElegantAppliance.com。数千种产品,超过100个类别/子类别。
#4
Make sure your database design is normalised as much as possible - use lookup tables where necessary to make sure you are not repeating data unnecessarily.
确保您的数据库设计尽可能正常化 - 在必要时使用查找表以确保不会不必要地重复数据。
Store your images on the server filesystem and store a relative (not full) path reference to them in the database.
将图像存储在服务器文件系统上,并在数据库中存储它们的相对(非完整)路径引用。
Use stored procedures for as much as possible, and always retrieve the least amount of data as you can from the server to help with memory and network traffic efficiencies.
尽可能使用存储过程,并始终从服务器检索最少量的数据,以帮助提高内存和网络流量效率。
Don't bother with caching, your database should be fast enough to produce results immediately, and if not, make it faster.
不要打扰缓存,您的数据库应该足够快,以便立即生成结果,如果没有,请加快速度。